2012-03-10 8 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"は、私が"Form1ObjectCars"のようなものと呼ばれるようにForm1のオブジェクト名を希望し、それが"Dogs"た場合、オブジェクト名は"Form1ObjectDogs"だろう== "Cars"だった場合。

+2

あなたはForm1の変数をしたいが名前Form1ObjectCarsまたはForm1ObjectDogsがありますか?私はプライベート変数のためにそうする理由は見当たりません...あなたが達成しようとしていることを教えてください:) – digEmAll

答えて

0

あなたが例

あなたが同じフォームを使用しているように聞こえる
//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

0

のために、このためにDictionary<TKey,TValue>クラスを使用しますが、ただ、異なるタイトルやキャプション、それをしたいことができます。

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(); 
関連する問題