C#通过窗体名字符串动态打开一个随机窗体

有这样一个需求,根据用户设置打开一个未知的窗体。因为是未知窗体,所以不能在程序中写死,只能通过传入的字符串来决定打开哪个窗体。

假设已经创建了Form1、Form2两个子窗体,命名空间是x。

主窗体参考代码如下:

using System.Reflection;

上面这句是增加命名空间的引用

Assembly tempAssembly = Assembly.GetExecutingAssembly();
Type t = tempAssembly.GetType("x.Form2");
object o = System.Activator.CreateInstance(t, null);
((Form)o).Show();

以上代码通过传入x.Form2这个字符串,打开了Form2窗体。

上面的几行代码也可以合并,取消中间变量,用一句代码代替:

 ((Form)System.Activator.CreateInstance(Assembly.GetExecutingAssembly().GetType("x.Form2"), null)).Show();


扫码关注我的公众号