如何在失去焦点时触发表单关闭

How do I trigger a form to close when it loses focus

我有两个表单,form1 和 form2。 form1 有一个按钮,单击该按钮可在 form1 上方打开 form2 中心屏幕。 form2 小于 form1(故意)。如果点击事件被触发并且 form2 打开,然后用户点击 form1,form2 会像 windows 中的大多数程序一样进入后台。

我想要的是:当 form2 打开时,用户单击其他内容,form2 关闭。

我试过(在 form2 上):

private void formLostFocus (object sender, System.EventArgs e)
{
  this.Close();
}

试试这个代码:

private void Form2_Deactivate(object sender, EventArgs e)
{
     this.Close();
}

并订阅 Deactivate 事件

this.Deactivate += new System.EventHandler(this.Form2_Deactivate);

使用此代码:

这是用于将打开 form2 的事件

private void button1_Click(object sender, EventArgs e)
        {
            Test.Form2 frm = new Test.Form2();
            frm.TopMost = true;
            frm.Show();
        }

在 form2 中使用 Deactivate,当您在窗体外部单击时将关闭窗体,并确保使用 TopMost = true;打开表格时。

private void Form2_Deactivate(object sender, EventArgs e)
{
    this.Close();
}