-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 に答える