アクティビティ (フォーカス) を失ったときにダイアログ (フォーム) を閉じるにはどうすればよいですか?ただし、別のアプリケーション、デスクトップなどに切り替えた場合は閉じません。
これまでのところ、私はこのコードを使用しています:
private void MyDialog_Deactivate(object sender, EventArgs e)
{
Close();
}
ダイアログという言葉の使用は混乱を招くと思います。これは通常、モーダルフォームを意味するためです。
あなたの説明に基づいて、アクティブ化されたメインフォームに基づいて開いているフォームを閉じることができると思います:
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();
}
}