就是写一个函数,传递一个字符串,做到如下形式:
FormName cFormname=new FormName()  //FormName 就是传来的字符串参数,cFormname是在FormName前加字母“c”
cFormname.Show();
这样做的好处是没必要全写出每个窗体的实例!
我用类型转化过不行,各位帮我看看有什么好的建议

解决方案 »

  1.   

    我在delphi下做过可以,刚学C#,这个应该能够实现
      

  2.   

    参看
    http://blog.csdn.net/Knight94/archive/2006/05/17/742324.aspx这里用到的反射方法
      

  3.   

    Knight94(愚翁) :
    先谢谢,我试了,同样也是出现在OpenWindow(typeof(frmjob).ToString)这句:“找不到类型或命名空间名称frmjob(是否缺少Using引用或程序集引用"
      

  4.   

    我知道是什么原因了,frmjob只能是已存在的窗体名,不能用字符串变量,但是这样就与我的初衷不相符!
      

  5.   

    其实关键就在OpenWindow这个函数,即调用的时候你可以用
     OpenWindow( "FormName");
      

  6.   

    我试了用OpenWindow(typeof("FormName").ToString)提示应输入类型
    用OpenWindow("FormName".ToString)异常"未处理的“System.NullReferenceException”类型的异常出现在 test2.exe 中。其他信息: 未将对象引用设置到对象的实例。"在Object obj = typForm.InvokeMember (
    null,
    BindingFlags.DeclaredOnly |
    BindingFlags.Public | BindingFlags.NonPublic |
    BindingFlags.Instance | BindingFlags.CreateInstance ,
    null,
    null,
    null);这句