1

アクティビティ (フォーカス) を失ったときにダイアログ (フォーム) を閉じるにはどうすればよいですか?ただし、別のアプリケーション、デスクトップなどに切り替えた場合は閉じません。

これまでのところ、私はこのコードを使用しています:

private void MyDialog_Deactivate(object sender, EventArgs e) { Close(); }

4

1 に答える 1

0

ダイアログという言葉の使用は混乱を招くと思います。これは通常、モーダルフォームを意味するためです。

あなたの説明に基づいて、アクティブ化されたメインフォームに基づいて開いているフォームを閉じることができると思います:

protected override void OnActivated(EventArgs e) {
  base.OnActivated(e);

  List<Form> closeForms = new List<Form>();
  foreach (Form f in Application.OpenForms) {
    if (!f.Equals(this)) {
      closeForms.Add(f);
    }
  }

  foreach (Form f in closeForms) {
    f.Dispose();
  }
}
于 2013-08-20T15:16:46.107 に答える