c# winform 反射 动态创建窗口

2024-11-20 02:21:06
推荐回答(4个)
回答1:

你获取textBox的值,然后if..else if.. else做个判断~!然后实例化不同的窗口就行了~!写个例子:string a=this.textbox.text;if(a==“A”){ From1 f1=new From1(); f1.show();}else if(a=="B"){ From2 f2=new From2(); f2.show();}else if(a=="C"){ From3 f3=new From3(); f3.show();}else if...................else if.............else......

回答2:

可以做个if语句 在Button单击事件里面这么写if(textBox1.text==A){ A a = new A(); a.Show();}else if(textBox1.text==B){ B b = new B(); b.Show();}else if(textBox1.text==C){ C c = new C(); c.Show();}else{ MessageBox.Show("error");}
你的里面 窗体的NAME属性是用的A.B.C吗?? 是的就是这个,不是就把ABC改为你窗体NAME属性里面的名字就可以了! 你重新创建窗体,不管怎么样,你都要使用这个做判断。

回答3:

其实很简单,从当前执行的程序集中,动态创建一个Form对象
Assembly assembly = Assembly.GetExecutingAssembly();
Form f = assembly.CreateInstance("XXXXXX") as Form;
XXXXX是对象的类型 命名空间 + 类名

回答4:

private void button1_Click(object sender, EventArgs e) { string formName = this.textBox1.Text; ObjectHandle objectHandle = Activator.CreateInstance(null, formName); Form form = (Form)objectHandle.Unwrap(); form.ShowDialog();
} 这是通过反射动态创建窗体的方法。在文本框中要将窗体类的完整名称写出来,包括命名空间,否则创建会失败。如果不想输入命名空间,可以将命名空间硬编码到代码中。