请教:vs2005winform如何通过变量(存有窗体名称)打开新的窗体?谢谢!

yyy39 2007-06-26 09:20:09
请教:vs2005winform如何通过变量(存有窗体名称)打开新的窗体?
主要目的,通过点击treeview打开名称等于Node.Text的窗体。
例如:string f1=Node.Text;
Form form = new f1();//当f1="登录"时打开登录窗体
form.Show();
应该如何实现呢?
谢谢!
...全文
644 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilovechao1314 2007-06-27
  • 打赏
  • 举报
回复
mark
pazzini 2007-06-27
  • 打赏
  • 举报
回复
我原来做过类似的东西,楼主在新打开的窗体中重载构造函数就行了,一个是不带参数的,另外一个是带参数的。当你需要传参数过去的时候,再用带参数的构造方法实例化一个窗体就行了。
Twoboy 2007-06-27
  • 打赏
  • 举报
回复
创建窗体必须要知道窗体的类型
调用对象必须要知道对象的名称和类型
但是如果想动态的使用这些就必须使用--反射--
可以动态的加载程序集,创建对象,对对象进行操作。。。。。
神奇的章鱼哥 2007-06-26
  • 打赏
  • 举报
回复
哈哈,没关系
yyy39 2007-06-26
  • 打赏
  • 举报
回复
对不起: imwjb(CSDN新规:不会结贴就不要提问)
不好意思,给分时输错了行.
yyy39 2007-06-26
  • 打赏
  • 举报
回复
谢谢各位朋友!
谢谢wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴)
谢谢!
zjh222 2007-06-26
  • 打赏
  • 举报
回复
用反射,上面已有代码,前提是你的窗体的程序集必须有Dll文件才行
wzd24 2007-06-26
  • 打赏
  • 举报
回复
yyy39() ( ) 信誉:100 Blog 加为好友 2007-06-26 09:50:24 得分: 0


Form form = (Form)Activator.CreateInstance(frmType);

************** 异常文本 **************
System.ArgumentNullException: 值不能为空。
参数名: type
在 System.Activator.CreateInstance(Type type, Boolean nonPublic)
在 System.Activator.CreateInstance(Type type)
在 x1.Form0.treeView1_AfterSelect(Object sender, TreeViewEventArgs e)

-----------------------------------------------------------------------------
这个是类型没有找到!你试试把命名空间加到类型名前面!
yyy39 2007-06-26
  • 打赏
  • 举报
回复
不好意思,单位不让上QQ
guyehanxinlei 2007-06-26
  • 打赏
  • 举报
回复
学习
Koala_sea 2007-06-26
  • 打赏
  • 举报
回复
mark
wzd24 2007-06-26
  • 打赏
  • 举报
回复
你加我吧!
6570858
yyy39 2007-06-26
  • 打赏
  • 举报
回复
Form form = (Form)Activator.CreateInstance(frmType);

************** 异常文本 **************
System.ArgumentNullException: 值不能为空。
参数名: type
在 System.Activator.CreateInstance(Type type, Boolean nonPublic)
在 System.Activator.CreateInstance(Type type)
在 x1.Form0.treeView1_AfterSelect(Object sender, TreeViewEventArgs e)
wzd24 2007-06-26
  • 打赏
  • 举报
回复
Form form = (Form)Activator.CreateInstance(frmType);
wzd24 2007-06-26
  • 打赏
  • 举报
回复
string f1=="登录";
Type frmType=Type.GetType(f1, false, true);
Form form = Activator.CreateInstance(frmType);//当f1="登录"时打开登录窗体
form.Show();
yyy39 2007-06-26
  • 打赏
  • 举报
回复
请教:wzd24(牧野)(衣带渐宽终不悔,为伊消得人憔悴)
Form form = Activator.CreateInstance(frmType);//当f1="登录"时打开登录窗体

错误1无法将类型“object”隐式转换为“System.Windows.Forms.Form”。存在一个显式转换(是否缺少强制转换?)
yyy39 2007-06-26
  • 打赏
  • 举报
回复
正常:
Form form = new 登录();
form.Show();
目的:
string f1=="登录";
Form form = new f1();//希望用f1打开登录窗体,因为f1内容是不断变化的。
form.Show();
应该如何实现呢?
谢谢!
wzd24 2007-06-26
  • 打赏
  • 举报
回复
string f1=Node.Text;
Type frmType=Type.GetType(f1, false, true);
Form form = Activator.CreateInstance(frmType);//当f1="登录"时打开登录窗体
form.Show();
david_anwei 2007-06-26
  • 打赏
  • 举报
回复
没有理解什么意思!
神奇的章鱼哥 2007-06-26
  • 打赏
  • 举报
回复
Activator.CreateInstance(type)
加载更多回复(2)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧