1

ユーザーが Form1 のボタンをクリックして Form2 を開く状況があります。Form1 のロード イベントは、データベースから返されたデータに基づいてツリービューを生成します。Form2 にデータを入力すると、データベースは更新されますが、ツリービューは更新されません。winform を閉じて再度開くと、新しいデータが取り込まれます。

私は数時間掘り下げていて、Form2 から Form1 の getdata メソッドを呼び出す方法を見つけましたが、うまくいきません。デバッグ モードでトレースでき、dataReader に新しい値が含まれていることを確認しましたが、ツリービューは更新されません。私はこのようにしました。

//In form 2
Form1 frm = new Form1();
frm.getData();

何も起こりません。frm.Show() と言うと、更新されたデータで新しい Form1 ウィンドウが開きますが、既に開いている Form1 ウィンドウでツリービューを更新したいと考えています。

これが問題の根源だと思います。frm への呼び出しはすべて、新しいウィンドウで行われます。Form2 から既存の Form1 ウィンドウの getData() メソッドにアクセスするにはどうすればよいですか?

4

5 に答える 5

0

私が理解していることは、既に存在する form1 への参照が必要だということだけです。Applicationフォームにアクセスするために使用する場合があります。

このコードのように:

 private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        {
            Form1 myfrm =Application.OpenForms["Form1"] as Form1;
            myfrm.GetData();
        }
于 2013-08-27T03:35:54.220 に答える