9

リストボックス内にデータのリストを含むメインフォームがあります。ボタンをクリックすると、新しいデータオブジェクトを作成するために新しいフォームが開きます (メインフォームはバックグラウンドで非アクティブです)。新しいデータが送信されると、メインフォーム内のリストボックスにその新しいオブジェクトが入力されます。

私は次のように考えていました:

  1. Form2 が送信されると、MainForm インスタンスを見つけてそのインスタンスを強制終了することを考えていました。その後、データベースからデータのリストを再度ロードしてリストボックスに表示するのは簡単です。

質問は:

Form1 が作成され、何らかのイベントで Form2 が showDialog でインスタンス化される場合、データが送信されるまで Form1 は非アクティブであるため、Form2 が閉じられる前に Form1 インスタンスを見つける方法は?

Form2 クラスから Form1 クラスのインスタンスを見つけるにはどうすればよいでしょうか。

ありがとう

4

2 に答える 2

51

プロパティを使用して、アプリケーションで現在開いているフォームへの参照を取得できApplication.OpenFormsます。FormsこれFormCollectionは、次のようにインデックスでアクセスできます。

var form1 = Application.OpenForms[0];

Nameまたは次のようにフォームのプロパティによって:

Form form1 = Application.OpenForms["Form1"];

お役に立てれば。

于 2013-07-07T17:16:53.267 に答える
-1

あなたが電話すれば

Form1.ShowDialog(this)

次に、呼び出しフォームへの参照を取得できます

this.Owner.Name

2番目のフォーム(あなたの場合はForm2)

http://msdn.microsoft.com/en-us/library/system.windows.forms.form.showdialog.aspxを参照してください

于 2013-07-07T17:15:28.407 に答える