2017-04-26 12 views
0

私はdinamically作成されたノードを持つTreeViewを持っています。他のフォームのTreeViewノード

他のフォームを閉じると、他のフォームからノー​​ドにアクセスしたいと思います。

しかし、動作しません。

サンプル:

をForm1

//show the other form (form2) 
private void button1_Click(object sender, EventArgs e) 
    { 
     using (Form1 form1 = new Form1()) 
     { 
      using (Form2 form2 = new Form2(form1)) 
      { 
       form2.StartPosition = FormStartPosition.CenterParent; 
       form2.ShowDialog(); 
      } 
     } 
    } 

    //call this method from other form (form2) when close 
    internal void example() 
    { 
     MessageBox.Show(treeView1.Nodes.Count.ToString()); 
    } 

    //create the nodes 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     TreeNode node = new TreeNode("aaaa"); 
     treeView1.Nodes.Add(node); 
     node = new TreeNode("bbbb"); 
     treeView1.Nodes.Add(node); 
     node = new TreeNode("cccc"); 
     treeView1.Nodes.Add(node); 
    } 

フォーム2

public partial class Form2 : Form 
{ 
    Form1 form1; 

    public Form2(Form1 form1) 
    { 
     InitializeComponent(); 

     this.form1 = form1; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     this.Close(); 
     form1.example(); 
    } 
} 

MessageBox.Show(treeView1.Nodes.Count.ToString())。

結果:0

答えて

1

問題は、この行である:

using (Form1 form1 = new Form1()) 

あなたForm2Form1の新しいインスタンスを送っています。

private void button1_Click(object sender, EventArgs e) 
{ 
    using (Form2 form2 = new Form2(this)) 
    { 
     form2.StartPosition = FormStartPosition.CenterParent; 
     form2.ShowDialog(); 
    } 
} 
+0

ええ、何が根本的な誤りか...あなたの驚くほど速い答えに感謝します! – kovak

1

Form1を2回構築します。このようにして、現在のインスタンスForm1を送信してください。一度フォームをボタンで表示する。ボタンを押すと、Form1の別のインスタンスが作成されます。この2番目のインスタンスはForm2に渡されます。しかし、... 2番目のインスタンスのLoadイベントは決して呼び出されません。つまり、そのツリーは決して満たされません。 Loadイベントは、フォームが表示され、このインスタンスが表示されない場合にのみ呼び出されます。

あなたはニノの答えに従うことをお勧めします。

...または、Form1の複数のインスタンスを持つと主張する場合、Load-eventhandlerではなく、Form1のコンストラクター内でツリーを塗りつぶすコードを移動します。

+0

私はあまりにも書いて怠惰だった説明のためのupvote :) – Nino

+0

ありがとう! @Nino心配しないで、問題の内容を理解しました。 – kovak

関連する問題