テキストボックスから文字列値を取得し、フォーム名がテキストボックスの文字列値と同じ場合。 このフォームを開くには?フォームを文字列名で開くには?
string formAAA = textbox.text; // "AAA"
フォーム 'AAA'を開く必要があります。
テキストボックスから文字列値を取得し、フォーム名がテキストボックスの文字列値と同じ場合。 このフォームを開くには?フォームを文字列名で開くには?
string formAAA = textbox.text; // "AAA"
フォーム 'AAA'を開く必要があります。
string formtocall = "blabla";
var form = Activator.CreateInstance(Type.GetType("namespace." + formtocall)) as Form;
form.ShowDialog();
あなたはリフレクションを使用する必要があります。
フォームを開くと、そのインスタンスが作成されます。インスタンスを作成して表示する必要があります。
フォームとその名前空間の名前が必要になります。
string formName= textbox.Text;
string namespaceName = "MyNamespace.MyInternalNamespace";
次に、アクティベータでインスタンスを作成します。
var frm= Activator.CreateInstance(namespaceName, formName) as Form;
そして、あなたは、単に以下のフォーム
frm.show();
完璧に作業しました!ありがとう!!! –
の使用を示すために必要があります。
private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace)
{
return assembly.GetTypes().Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)).ToArray();
}
private void Form1_Load(object sender, EventArgs e)
{
//Get all types
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "loopClasses");
for (int i = 0; i < typelist.Length; i++)
{//Loop on them
if (typelist[i].BaseType == typeof(System.Windows.Forms.Form) && typelist[i].Name == textbox.text)
{//if windows form and the name is match
//Create Instance and show it
Form tmp =(Form) Activator.CreateInstance(typelist[i]);
//MessageBox.Show(typelist[i].Name);
tmp.Show();
}
}
}
をどうもありがとうございました。 –
これがあなたの質問に答えたと思うなら、それを答えとしてマークして、他の人が正しい答えを素早く見つけ出し、またHüseyinにクレジットを与えるのを助けてください。 – MrApnea