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

时间:2015-03-29 21:36:47

标签: c# forms events

我有两种形式,form1和form2。 form1有一个按钮,单击该按钮可在form1上打开form2中心屏幕。 form2小于form1(故意)。如果触发click事件并且form2处于打开状态,那么用户单击form1,form2将落后于windows中的大多数程序。

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

我已尝试过(在表格2上):

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

2 个答案:

答案 0 :(得分:3)

请尝试使用此代码

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

订阅Deactivate事件

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

答案 1 :(得分:0)

使用此代码:

这是针对将打开form2的事件

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

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

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