0

我正在尝试打开动态附加在 menustrip 中的表单。

这里我的代码是:

表格frm

string formName =((ToolStripMenuItem)sender).Text;
formName = Assembly.GetEntryAssembly().GetName().Name + "." + formName;

Type type = Type.GetType(formName);
frm = (Form)Activator.CreateInstance(type);           

frm.Show();

问题就在这里。我null得到了这种类型的价值。请帮助我完成这项任务。

4

2 回答 2

0

如果您不知道完全限定名称,您可以迭代程序集中的类型并找到您感兴趣的类型。

var q = from t in Assembly.GetExecutingAssembly().GetTypes()
        where t.IsClass && t.Name.Equals(formname) && t.IsSubclassOf(typeof(Form))
        select t;
于 2013-04-12T07:48:32.773 回答
0

您正在混淆程序集名称 ( Assembly.GetEntryAssembly().GetName().Name) 和命名空间。

您需要找到表单的真正完全限定的类名。如果您知道名称空间(即所有表单的名称空间始终相同),您可以简单地对其进行硬编码。另一种解决方案是使用反射来枚举 GetEntryAssembly程序集中的所有类型,然后检查该类型是否代表具有给定名称的表单。

于 2013-04-12T07:46:01.510 回答