Although it may be "valid for assigning a MyFont object to an object", the object can no longer be useful because it can free managed and / or unmanaged resources. Objects created by opening the using
statement indicate that the class underlying the object implements the IDisposable
interface. This should be considered a warning sign that when placing an object, you should stop interacting with it, including maintaining a link to it.
In the case of a font, the font underlying the resources was removed when you left the usage block:
using (Font f = new Font("Shyam",2)) { this.MyFont = f; }
This is easy to verify if you try to use a font in any drawing operation.
This code will fail with a System.ArgumentException
because the font is located:
public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } private void UserControl1_Load(object sender, EventArgs e) { if (DesignMode) { return; } AssignFont(); } #region Overrides of Control

The problem with your code is that you highlight something in the usage block and keep the link to it in another place. In your scenario, because you want to use the font elsewhere, it makes no sense to have a using
block.
Bad:
using (Font f = new Font("Shyam",2)) { this.MyFont = f; }
It is better:
this.MyFont = new Font("Shyam",2)
Fonts I suspect use native fonts, hence the resource.
source share