窗体的名称是以字符形式记录的。
现在要打开这个窗体,怎么样进行类转化?才可以将其转化为Form类。谢谢string str_frm = "From2";

解决方案 »

  1.   

    给一个代码实例好吗?我是初学者!TKS!
      

  2.   


    //利用反射可以解决你的问题,需要using System.Reflection;
    string str_frm = "From2";
    string typeName="命名空间."+str_frm;//注意这里需要全类名
    Type fType=Type.GetType(str_frm);
    Form f=(Form)fType.InvokeMember("乱写",BindingFlags.CreateInstance,null,null,null);
    //f就是你要的东西
      

  3.   

    丫曰:Type fType=Type.GetType(str_frm);
    得到的值是null哦,后面一句就报错了。
      

  4.   

    //利用反射可以解决你的问题,需要using System.Reflection;
    string str_frm = "From2";
    string typeName="命名空间."+str_frm;//注意这里需要全类名
    Type fType=Type.GetType(str_frm);
    Form f=(Form)fType.InvokeMember("乱写",BindingFlags.CreateInstance,null,null,null);
    //f就是你要的东西改撑
    //利用反射可以解决你的问题,需要using System.Reflection;
    string str_frm = "From2";
    string typeName="命名空间."+str_frm;//注意这里需要全类名
    Type fType=Type.GetType(typeName);
    Form f=(Form)fType.InvokeMember("乱写",BindingFlags.CreateInstance,null,null,null);
    //f就是你要的东西
      

  5.   

    string   typeName   =   "myNamespace.myForm";   
     Form   frm   =   (Form)Activator.CreateInstance(Type.GetType(typeName));private Form LoadForm(string AssemblyName, string TypeForm) 
            {          
                Assembly _Assembly = Assembly.Load(AssemblyName); 
                Type _FormType = _Assembly.GetType(TypeForm);            
                object _LoadForm = _FormType.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null); 
                return (System.Windows.Forms.Form)_LoadForm;        
            } 
     
      

  6.   

    form名:form1
    命名空间:A
    (Form)Activator.CreateInstance(null, "A." + "form1")
      

  7.   

    typeName就是类名
    系统不能用简化的类名
    所以你必须加上你的命名空间。
    比如 System.String,就不能写成String
    要注意,窗体类必须和你代码在一个程序集中。