Aquí una forma simple de hacerlo, supongo que no necesita explicación:
Código:
public Hashtable instances = new Hashtable();
public Form Open(string type)
{
try
{
Form form = instances[type] as Form;
if (form == null || form.IsDisposed)
{
form = Activator.CreateInstance(null, type).Unwrap() as Form;
instances[type] = form;
}
if (this.IsMdiContainer)
form.MdiParent = this;
form.Activate();
form.Show();
return form; // Por si quieres hacer algo con el formulario
}
catch (Exception ex)
{
// Maneja el error
return null;// ?
}
}
private void OptionClick(object sender, System.EventArgs e)
{
MenuItem mi = sender as MenuItem;
// Se asume que en mi.Text está el tipo del formulario, Ej: MyCompany.MyApp.MyClass
Open(mi.Text);
}
Saludos
PS. El paso de c# a vb.net queda como tarea