2012-03-10 89 views
0

我知道這已經部分覆蓋,但我相信這個問題我還沒有被完全覆蓋:如何動態地創建表格的對象名稱

我有一個創建一個Form時的對象的事件事件發生:

private void hostView_AfterSelect(object sender, TreeViewEventArgs e) 
    { 
     string selectedNodeText = e.Node.Text; 
     if (selectedNodeText == "Internal Hosts" || selectedNodeText == "External Hosts") 
     { 
      // ignore, parent nodes have no corrosponding tab! 
     } 
     else 
     { 
      Form1 Form1Object = new Form1(selectedNodeText); 
      Form1Object.Show(); 
     } 

    } 

雖然我需要根據"selectedNodeText"字符串值創建的Form1許多對象。

例如:如果"selectedNodeText"== "Cars"我想的Form1對象名稱被稱爲像"Form1ObjectCars",如果這是"Dogs"對象名稱將是"Form1ObjectDogs"

+2

你想在Form1變量有名稱Form1ObjectCars或Form1ObjectDogs?我沒有看到任何理由這樣做一個私人變量...請告訴我們你想達到什麼:) – digEmAll 2012-03-10 14:12:28

回答

0

可以使用Dictionary<TKey,TValue>類此,例如

//Initialize 
Dictionary<string, Form1> forms = new Dictionary<string, Form1>(); 

//Add objects 
if(selectedNodeText == "foo") 
    forms.Add("foo", new Form1("foo")); 

if(selectedNodeText == "bar") 
    forms.Add("bar", new Form1("bar")); 

//Get objects 
Form1 bar = forms["bar"]; 
+0

對不起,但整個想法是,我可以有一個Form1變量對象名稱,但你已經在你的例子中指定了「bar」 – user1261072 2012-03-10 14:26:27

0

這聽起來像你正在使用相同的形式,而只是希望標題或標題不同的看法。

string caption = string.Format("Form1Object{0}", selectedNodeText); 
Form1 Form1Object = new Form1(caption); 
// in the Form's constructor you are doing a this.Text = caption? 
Form1Object.Show(); 

或避免其傳遞到窗體:

Form1 Form1Object = new Form1(); 
Form1Object.Text = string.Format("Form1Object{0}", selectedNodeText); 
Form1Object.Show();