日期:2014-05-18  浏览次数:20941 次

如何将一个字符串转化为窗体类
窗体的名称是以字符形式记录的。
现在要打开这个窗体,怎么样进行类转化?才可以将其转化为Form类。谢谢

string str_frm = "From2";


------解决方案--------------------

------解决方案--------------------
反射或者序列化。
------解决方案--------------------
C# code

//利用反射可以解决你的问题,需要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(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就是你要的东西

------解决方案--------------------
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;

 

------解决方案--------------------
form名:form1
命名空间:A
(Form)Activator.CreateInstance(null, "A." + "form1")