如何在此之前检测TextBox Leave Event中的close(X)按钮的click事件?

时间:2014-05-19 14:06:55

标签: c# winforms events formclosing

如何检测此前触发的TextBox_Leave事件中窗体/窗口控件框右上角的关闭(X)按钮的单击事件? 我不想知道关于CloseReason,FormClosing,FormClosed或类似的东西,除非它们是不可避免的。

我确实想检测用户是否点击了表单的X按钮。我的情况显然是我有textBox和Button。在TextBox_Leave中有一个新的Screen已经打开但是当textBox聚焦时然后按(X)按钮离开事件Fire然后我需要知道如果用户按(X)按钮或不显示从离开事件或关闭当前屏幕的新屏幕

我无法使用上述事件,因为它会在TextBox_Leave之后触发但是我想知道在执行TextBox_Leave代码之前是否按下了(X)按钮。

3 个答案:

答案 0 :(得分:2)

如果我理解正确的话试试这个:

bool isButtonClick = false;

private void button1_Click(object sender, EventArgs e)
{
    isButtonClick = true;
    this.Close();
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if(isButtonClick)
    {
         //User close form with Button
    }
    else
    {
         //User close form with (X) button at the top right corner of the
         //control box of a form/window
    }
}

答案 1 :(得分:0)

我在解释您的问题时遇到了一些问题,但如果我理解正确,您想知道用户是否选择在用户关闭之前关闭该程序,以便您可以停止任何正在进行的工作?

你有什么理由不想为此使用form_closing,或者我完全误解了你的问题?因为我会使用像这样的form_closing来解决它

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
            // Display a MsgBox asking the user to close the form.
            if (MessageBox.Show("Are you sure you want to close the form?", "Close Form",
               MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.No)
            {
                // Cancel the Closing event
                e.Cancel = true;
            }

}

消息框当然可以替换为代码,以暂停当前正由您的代码执行的任何正在进行的作业。但也许我误解了你在找什么?

答案 2 :(得分:0)

您(编辑)问题的答案是:"否"。

将首先触发TextBox.Leave事件,然后处理关闭(X)按钮。

但是,如果不知道为什么要翻转订单,我们就无法提供更多信息。