用反射,做法如下:
using System.Reflection;
......Assembly assembly = Assembly.GetExcutingAssembly();
Form f = assembly.GetType(Form2所在的命名空间 + ".Form2") as Form;
f.Show();

解决方案 »

  1.   

    楼上说的,好像不行..提示:
    E:\OutPatientSolution\AppMain\WinMain.cs(249): 无法通过内置转换将类型“System.Type”转换为“System.Windows.Forms.Form”
      

  2.   

    using System.Reflection;
    namespace WindowsApplication1
    {
      public class Form1 : System.Windows.Forms.Form
      {
        //窗体里的代码就省略了
       private void ShowForm()
       {
         Form newForm=(Form)(Activator.CreateInstanceFrom("WindowsApplication1.exe","WindowsApplication1.MyForm").Unwrap());
         newForm.Show();
       }
      }  public class MyForm:Form
      {
        public MyForm()
        {
           Text="MyForm";
         }
      }
    }
      

  3.   

    在反射中使用窗体的全名(命名控件.ClassName)