RT.
在FORM1中:string formName = "FORM2";//FORM2已有
Form form2 = (Form)formName;//当然这样是不行的,就是想实现这样的效果
form2.show();
我在网上查了一下,有一种反射的方法还没试不知道行不行:
Form f   =   (Form)System.Activator.CreateInstance(Type.GetType("你的命名空间.formName"));   
f.Show();还有其他方法吗?

解决方案 »

  1.   

    反射是最好的办法。或者你可以写一个工厂:
    System.Windows.Forms.Form CreateForm(string FormName)
    {
        switch (FormName)
        {
            case "Form1":
                return new Form1();
            case "Form2":
                return new Form2();
            ...
        }
    }
      

  2.   

    本质上说,不支持RTTI的语言,如果需要反射,就是用以上方法模拟的。
      

  3.   

    string path=AssemblyName;//项目的Assembly选项名称
    string name=strName; //类的名字
    Form fm=(Form)Assembly.Load(path).CreateInstance(name);
    fm.MdiParent=this.ParentForm;
    fm.Show();string str = "Form1";
    System.Reflection.Assembly tempAssembly = System.Reflection.Assembly.GetExecutingAssembly();
    Form frm1 = (Form)tempAssembly.CreateInstance(str);
    frm1.Show();
      

  4.   

    首先告诉你使用反射肯定行
    另外,除了反射的方法之外,我还真不知道还能用什么方法
    第三,怎么做?MSDN!
      

  5.   

    我认为,凡是MSDN能解决的问题
    都不应该发到CSDN上来
      

  6.   

            private void button1_Click(object sender, EventArgs e)
            {
                object o = new Form2();
                Form a = (Form)o;
                a.Show();
            }
    不知道是不是这效果,感觉和你要的比较像
      

  7.   

    好了,你可以将Assembly类的所有方法属性都看一下
    如果你的FORM在当前程序集中,可以使用Assembly.GetExecutingAssembly获取当前程序集,然后反射调用其中的方法
    如果是另一个程序集,可以使用Assembly.LoadFile 、Assembly.Load、Assembly.LoadFrom,这些都是静态方法
    如何反射调用方法,参考System.Reflection.MethodInfo类
      

  8.   

    不是,我想用在取系统菜单列表(xml)后 拿出点击的菜单对应的FORM名,然后通过FORM名实例化show出窗体。