2016-05-30 10 views

答えて

2
string formtocall = "blabla"; 

    var form = Activator.CreateInstance(Type.GetType("namespace." + formtocall)) as Form; 

    form.ShowDialog(); 
+1

をどうもありがとうございました。 –

+0

これがあなたの質問に答えたと思うなら、それを答えとしてマークして、他の人が正しい答えを素早く見つけ出し、またHüseyinにクレジットを与えるのを助けてください。 – MrApnea

0

あなたはリフレクションを使用する必要があります。

フォームを開くと、そのインスタンスが作成されます。インスタンスを作成して表示する必要があります。

フォームとその名前空間の名前が必要になります。

string formName= textbox.Text; 
string namespaceName = "MyNamespace.MyInternalNamespace"; 

次に、アクティベータでインスタンスを作成します。

var frm= Activator.CreateInstance(namespaceName, formName) as Form; 

そして、あなたは、単に以下のフォーム

frm.show(); 
+0

完璧に作業しました!ありがとう!!! –

0

の使用を示すために必要があります。

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(); 
        } 
       } 

      } 
関連する問題