如何在对话框(表单)失去活动(焦点)时关闭它,但如果您切换到另一个应用程序、桌面等,它不会关闭?
到目前为止,我使用此代码:
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();
}
}