-1

我想知道是否可以在不使用反射的情况下通过名称字符串动态显示表单。

4

2 回答 2

1

你的问题不清楚。但这是你要找的东西:

if (form.Name == "name1") form.Show();
于 2013-02-18T18:11:18.807 回答
0

你可以,用这样一个巨大的switch声明

switch (formName)
{
    case "form1":
        new Form1().Show();
        break;
    ...
}

同样的switch声明也适用于工厂模式

但是,按照以下方式做更多的事情肯定会更干净:

var o = Activator.CreateInstance(Type.GetType(formName));

默认情况下,该Type.GetType(string)方法执行区分大小写的搜索,因此如果这不起作用,您可以使用不同的重载Type.GetType(string, bool, bool),您可以在其中确定是否要忽略大小写。它可能看起来像这样:

var o = Activator.CreateInstance(Type.GetType(formName, true, false));
于 2013-02-18T18:12:45.870 回答