mainForm と subForm の 2 つのフォームがあります。mainForm がフォーカスを失うと、subForm が消えてから、mainForm がフォーカスを取り戻すと再び表示されるようにします。mainForm で Activated イベントと Deactivate イベントを使用して、mainForm にフォーカスがあるかどうかを追跡しています。Activated が発生すると、subForm.Show() を実行し、Deactivate の反対を実行します。私が抱えている問題は、サブフォームがフォーカスを獲得したとき、メインフォームが消えるということです。プログラムで「メインフォームの Deactivate イベントが発生したときにサブフォームを非表示にする」と言う方法がわからないため、サブフォームがフォーカスを獲得したためです。ユーザーが別のアプリケーションをクリックしたり、ALT + TAB を使用して切り替えたりしたために mainForm がフォーカスを失ったときに、両方のウィンドウを非表示にすることです。
class MainForm : Form
{
SubForm subForm = new SubForm();
private void mainForm_Activated(object sender, EventArgs e)
{
this.subForm.Show();
}
private void mainForm_Deactivate(object sender, EventArgs e)
{
this.subForm.Hide()
// I need some logic to make sure that it is only hidden
// when the mainForm loses focus because the user clicked
// some other application in the taskbar and not when the
// subForm itself gains the focus.
}
}