void open(form a)
{
   a.show()
}
但参数必须不是此方法的局部变量

解决方案 »

  1.   

    switch(textbox1.Text)
    {
    case "form1":
        Form form1 = new form1();
        form1.Show();
        break;
    }
      

  2.   

    先定义一下新form:
    form1 newForm = new form1;if (textBox1.Text=="form1")
    {
      newForm.Show();
    }
      

  3.   

    这个比较好:private void showMyForm(string fullFormName)
    {
       Form frm = (Form)Activator.CreateInstance( Type.GetType(fullFormName) );
       frm.Show();
    }//when use it:
    this.showMyForm( "YourNamespace.frmName" );
      

  4.   

    TO:
    Tomgus(小桥流水) private void showMyForm(string fullFormName)
    {
       Form frm = (Form)Activator.CreateInstance( Type.GetType(fullFormName) );
       frm.Show();
    }//when use it:
    this.showMyForm( "Form1" );提示错误:
    值不能为空。
    参数名:type
      

  5.   

    Tomgus(小桥流水) 要求写fullFormName,也就是包括form所在的namespace也要写在其中。
    否则会出错。
      

  6.   

    switch(textbox1.Text)
    {
    case "form1":
        Form form1 = new form1();
        form1.Show();
        break;
    }简单而且容易理解 我不知道你为什么不选择它。
      

  7.   

    TO lucbesson(女娃哈哈)
    这个对于多个窗体来说,是不可行的,你不可能设定多个case吧。如果有几十到上百个窗体的话,这样的设计我觉得效率是不高的。
      

  8.   

    照 Tomgus(小桥流水)和yanransoft() 所说的解决了问题,结贴了。。
      

  9.   

    本贴已接,但我还是要把好方法告诉大家:
    用反谢!!!
    看看利用反射动态调用窗体对象的方法: 
    private void CreateForm(string strName) 

    this.Cursor = Cursors.WaitCursor; string path=AssemblyName;//项目的Assembly选项名称 
    string name=strName; //类的名字 Form fm=(Form)Assembly.Load(path).CreateInstance(name); 
    fm.MdiParent=this.ParentForm; 
    fm.Show(); 
    fm.Dock=DockStyle.Fill; 
    this.Cursor = Cursors.Default;