string 类型转换成form类型 怎么做

时间:2022-09-12 10:17:34
string 类型转换成form类型 怎么做

我现在有一个string类型的参数

string a =“form1”;

我怎么操作才能实现

a 转换成 form类型 实现 a.show();等form的操作

29 个解决方案

#1


//反射

Assembly   assem   =   Assembly.Load("dll名称");     
  Type   myType   =   assem.GetType("form1");       
  Object   obj   =   Activator.CreateInstance(myType);
Form a = (Form)obj;
a.Show();

#2


为什么要转换啊,

你就声明一个窗体,name = "form1"

不行么?

#3


  Type _FormType = Type.GetType("WindowsApplication1.Form1");

            Form _LoadForm = (Form)_FormType.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null);

            _LoadForm.Show();





#4


Assembly.Load("dll名称");    


load什么呢?

#5


学习了

#6


引用 3 楼 zgke 的回复:
  Type _FormType = Type.GetType("WindowsApplication1.Form1"); 

            Form _LoadForm = (Form)_FormType.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null); 

            _LoadForm.Show(); 


很好用!

#7


引用 4 楼 QQQQAnnie 的回复:
Assembly.Load("dll名称");    


load什么呢?


load 类 form1 所在的dll

#8


如果窗口在当前程序集,直接用GetExecutingAssembly()
void button1_Click(object sender, EventArgs e)
        {
            ((Form)Activator.CreateInstance(System.Reflection.Assembly.GetExecutingAssembly().GetType("WindowsApplication52.Form1"))).ShowDialog();
        }

#9


这个问题好.

#10


引用 1 楼 ralpha08 的回复:
//反射 

Assembly  assem  =  Assembly.Load("dll名称");    
  Type  myType  =  assem.GetType("form1");      
  Object  obj  =  Activator.CreateInstance(myType); 
Form a = (Form)obj; 
a.Show();

就是这样

#11


Assembly assem = Assembly.Load("mscorlib");//这写的对么?
           Type myType = assem.GetType("frmReadIpAdr");
           Object obj = Activator.CreateInstance(myType);//Bug :Value cannot be null.
                                                         // Parameter name: type
           Form a = (Form)obj;
           a.Show();


 

#12


引用 11 楼 QQQQAnnie 的回复:
C# codeAssembly assem = Assembly.Load("mscorlib");//这写的对么?
           Type myType = assem.GetType("frmReadIpAdr");
           Object obj = Activator.CreateInstance(myType);//Bug :Value cannot be null.
                                                         // Parameter name: type
           Form a = (Form)obj;
           a.Show();


你确定你load的 mscorlib 组件中有frmReadIpAdr这个类?

#13


因为我想做一个windows窗体类似的 后退到前一个窗体的 例子

我用list《string》 存储了所有打开的窗体名称,存储格式都是string,等后退打开的时候就需要转换成from类型,再显示或操作。

另外winform的后退操作有更简单的办法吗 ,继续求教

#14


list里面直接存Form不就行了吗?不需要存什么string;另外如果是做Redo/Undo操作的话,最好使用堆栈,不用要list;可以实现“无限次”的Redo/Undo操作的;

#15


同一个程序里所有打开的窗体查阅Application.OpenForms数组

#16


反射,学习

#17


引用 12 楼 ralpha08 的回复:
引用 11 楼 QQQQAnnie 的回复:
C# codeAssembly assem = Assembly.Load("mscorlib");//这写的对么? 
          Type myType = assem.GetType("frmReadIpAdr"); 
          Object obj = Activator.CreateInstance(myType);//Bug :Value cannot be null. 
                                                        // Parameter name: type 
          Form a = (Form)obj; 
          a.Show(); 
 

你确定你load的 m…


真晕,frmReadIpAdr,我这是窗体名。

#18


引用 13 楼 MAKTY 的回复:
因为我想做一个windows窗体类似的 后退到前一个窗体的 例子 

我用list《string》 存储了所有打开的窗体名称,存储格式都是string,等后退打开的时候就需要转换成from类型,再显示或操作。 

另外winform的后退操作有更简单的办法吗 ,继续求教


这个得挺麻烦.

#19


mscorlib是系统dll frmReadIpAdr是你自己的类
Type myType = assem.GetType("frmReadIpAdr"); 
你要从mscorlib中得到frmReadIpAdr类,当然返回的是null
所以才会有下面的情况
Object obj = Activator.CreateInstance(myType);//Bug :Value cannot be null. 

#20


string 类型转换成form类型 怎么做 

我现在有一个string类型的参数 

string a =“form1”; 

我怎么操作才能实现 

a 转换成 form类型 实现 a.show();等form的操作


这问题问的。。。。。。。。。。。。。。。。。。。。

我追加一个,我电脑里16M的程序,怎么把它转化为我银行的存款啊。

#21


该回复于2009-05-18 20:12:40被版主删除

#22


加载程序集的关键字

#23


引用 20 楼 gxj760998 的回复:
string 类型转换成form类型 怎么做 

我现在有一个string类型的参数 

string a =“form1”; 

我怎么操作才能实现 

a 转换成 form类型 实现 a.show();等form的操作 


这问题问的。。。。。。。。。。。。。。。。。。。。 

我追加一个,我电脑里16M的程序,怎么把它转化为我银行的存款啊。


string 类型转换成form类型 怎么做

#24


感谢大家的回答 问题解决 
顺带鄙视底楼zhoukang0916 
问题都不明白瞎装,会就回答 不会就眯着 得瑟什么

#25


看错了 是20喽~
zhoukang0916 不好意思 

#26


string 类型转换成form类型
帖子名字起的不好,会让人误解。
string 类型转换成form类型 怎么做 

我现在有一个string类型的参数 

string a =“form1”; 

我怎么操作才能实现 

a 转换成 form类型 实现 a.show();等form的操作

例子举的不好,即使你要说的是类型反射,也不应该这样举例,特别是form1,不是FORM类型。
LZ你是新手,也不好说什么。
你仔细看看别人的回复:多少人被你的FORM1误导了,问题都阐述不清楚,该反省才对。

Assembly  assem  =  Assembly.Load("dll名称");    
  Type  myType  =  assem.GetType("form1");      
  Object  obj  =  Activator.CreateInstance(myType); 
Form a = (Form)obj; 
a.Show();

问题都不明白瞎装,会就回答 不会就眯着 得瑟什么
说句不好听的话,没人BS你,就不会有进步的压力。

#27


谢谢猴子教导啊

bs我菜我不反对 但大家都是出来问和回答问题来的 不是让某些人出来说风凉话还不办事的 会帮大家解决 不会别说话 帮忙顶下

也好 bs我 然后还帮我解决问题 我还是谢谢你 用你的话说 我进步了 

你的做法 还是让我狠狠的bs 谢谢

我的问题问的不好 不过貌似20楼以上好多回答都是对的 不知道别人理解能力怎么这么好 还是你个人有问题

最后不要抄袭别人的答案给自己脸上增加光彩

#28


好吧,以后你就这样下去吧。指望别人理解能力都很好,都知道你要说的和你写的有点差别。

#29


问一下楼主怎么解决的,急用,谢谢

#1


//反射

Assembly   assem   =   Assembly.Load("dll名称");     
  Type   myType   =   assem.GetType("form1");       
  Object   obj   =   Activator.CreateInstance(myType);
Form a = (Form)obj;
a.Show();

#2


为什么要转换啊,

你就声明一个窗体,name = "form1"

不行么?

#3


  Type _FormType = Type.GetType("WindowsApplication1.Form1");

            Form _LoadForm = (Form)_FormType.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null);

            _LoadForm.Show();





#4


Assembly.Load("dll名称");    


load什么呢?

#5


学习了

#6


引用 3 楼 zgke 的回复:
  Type _FormType = Type.GetType("WindowsApplication1.Form1"); 

            Form _LoadForm = (Form)_FormType.InvokeMember(null, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.CreateInstance, null, null, null); 

            _LoadForm.Show(); 


很好用!

#7


引用 4 楼 QQQQAnnie 的回复:
Assembly.Load("dll名称");    


load什么呢?


load 类 form1 所在的dll

#8


如果窗口在当前程序集,直接用GetExecutingAssembly()
void button1_Click(object sender, EventArgs e)
        {
            ((Form)Activator.CreateInstance(System.Reflection.Assembly.GetExecutingAssembly().GetType("WindowsApplication52.Form1"))).ShowDialog();
        }

#9


这个问题好.

#10


引用 1 楼 ralpha08 的回复:
//反射 

Assembly  assem  =  Assembly.Load("dll名称");    
  Type  myType  =  assem.GetType("form1");      
  Object  obj  =  Activator.CreateInstance(myType); 
Form a = (Form)obj; 
a.Show();

就是这样

#11


Assembly assem = Assembly.Load("mscorlib");//这写的对么?
           Type myType = assem.GetType("frmReadIpAdr");
           Object obj = Activator.CreateInstance(myType);//Bug :Value cannot be null.
                                                         // Parameter name: type
           Form a = (Form)obj;
           a.Show();


 

#12


引用 11 楼 QQQQAnnie 的回复:
C# codeAssembly assem = Assembly.Load("mscorlib");//这写的对么?
           Type myType = assem.GetType("frmReadIpAdr");
           Object obj = Activator.CreateInstance(myType);//Bug :Value cannot be null.
                                                         // Parameter name: type
           Form a = (Form)obj;
           a.Show();


你确定你load的 mscorlib 组件中有frmReadIpAdr这个类?

#13


因为我想做一个windows窗体类似的 后退到前一个窗体的 例子

我用list《string》 存储了所有打开的窗体名称,存储格式都是string,等后退打开的时候就需要转换成from类型,再显示或操作。

另外winform的后退操作有更简单的办法吗 ,继续求教

#14


list里面直接存Form不就行了吗?不需要存什么string;另外如果是做Redo/Undo操作的话,最好使用堆栈,不用要list;可以实现“无限次”的Redo/Undo操作的;

#15


同一个程序里所有打开的窗体查阅Application.OpenForms数组

#16


反射,学习

#17


引用 12 楼 ralpha08 的回复:
引用 11 楼 QQQQAnnie 的回复:
C# codeAssembly assem = Assembly.Load("mscorlib");//这写的对么? 
          Type myType = assem.GetType("frmReadIpAdr"); 
          Object obj = Activator.CreateInstance(myType);//Bug :Value cannot be null. 
                                                        // Parameter name: type 
          Form a = (Form)obj; 
          a.Show(); 
 

你确定你load的 m…


真晕,frmReadIpAdr,我这是窗体名。

#18


引用 13 楼 MAKTY 的回复:
因为我想做一个windows窗体类似的 后退到前一个窗体的 例子 

我用list《string》 存储了所有打开的窗体名称,存储格式都是string,等后退打开的时候就需要转换成from类型,再显示或操作。 

另外winform的后退操作有更简单的办法吗 ,继续求教


这个得挺麻烦.

#19


mscorlib是系统dll frmReadIpAdr是你自己的类
Type myType = assem.GetType("frmReadIpAdr"); 
你要从mscorlib中得到frmReadIpAdr类,当然返回的是null
所以才会有下面的情况
Object obj = Activator.CreateInstance(myType);//Bug :Value cannot be null. 

#20


string 类型转换成form类型 怎么做 

我现在有一个string类型的参数 

string a =“form1”; 

我怎么操作才能实现 

a 转换成 form类型 实现 a.show();等form的操作


这问题问的。。。。。。。。。。。。。。。。。。。。

我追加一个,我电脑里16M的程序,怎么把它转化为我银行的存款啊。

#21


该回复于2009-05-18 20:12:40被版主删除

#22


加载程序集的关键字

#23


引用 20 楼 gxj760998 的回复:
string 类型转换成form类型 怎么做 

我现在有一个string类型的参数 

string a =“form1”; 

我怎么操作才能实现 

a 转换成 form类型 实现 a.show();等form的操作 


这问题问的。。。。。。。。。。。。。。。。。。。。 

我追加一个,我电脑里16M的程序,怎么把它转化为我银行的存款啊。


string 类型转换成form类型 怎么做

#24


感谢大家的回答 问题解决 
顺带鄙视底楼zhoukang0916 
问题都不明白瞎装,会就回答 不会就眯着 得瑟什么

#25


看错了 是20喽~
zhoukang0916 不好意思 

#26


string 类型转换成form类型
帖子名字起的不好,会让人误解。
string 类型转换成form类型 怎么做 

我现在有一个string类型的参数 

string a =“form1”; 

我怎么操作才能实现 

a 转换成 form类型 实现 a.show();等form的操作

例子举的不好,即使你要说的是类型反射,也不应该这样举例,特别是form1,不是FORM类型。
LZ你是新手,也不好说什么。
你仔细看看别人的回复:多少人被你的FORM1误导了,问题都阐述不清楚,该反省才对。

Assembly  assem  =  Assembly.Load("dll名称");    
  Type  myType  =  assem.GetType("form1");      
  Object  obj  =  Activator.CreateInstance(myType); 
Form a = (Form)obj; 
a.Show();

问题都不明白瞎装,会就回答 不会就眯着 得瑟什么
说句不好听的话,没人BS你,就不会有进步的压力。

#27


谢谢猴子教导啊

bs我菜我不反对 但大家都是出来问和回答问题来的 不是让某些人出来说风凉话还不办事的 会帮大家解决 不会别说话 帮忙顶下

也好 bs我 然后还帮我解决问题 我还是谢谢你 用你的话说 我进步了 

你的做法 还是让我狠狠的bs 谢谢

我的问题问的不好 不过貌似20楼以上好多回答都是对的 不知道别人理解能力怎么这么好 还是你个人有问题

最后不要抄袭别人的答案给自己脸上增加光彩

#28


好吧,以后你就这样下去吧。指望别人理解能力都很好,都知道你要说的和你写的有点差别。

#29


问一下楼主怎么解决的,急用,谢谢