C# 如何检测在此之前触发的TextBox\u Leave事件中关闭(X)按钮的单击事件?

C# 如何检测在此之前触发的TextBox\u Leave事件中关闭(X)按钮的单击事件?,c#,winforms,events,formclosing,C#,Winforms,Events,Formclosing,如何检测文本框中窗体/窗口控制框右上角的close(X)按钮的click事件?在此之前是否触发了Leave事件? 我不想知道CloseReason,FormClosing,FormClosing之类的东西,除非它们是不可避免的 我确实想检测用户是否单击了表单的X按钮。我的情况显然是,我有文本框和按钮。在TextBox\u Leave中有一个新屏幕打开,但当TextBox聚焦后,按下(X)按钮,Leave事件将首先触发,但我需要知道用户是否按下(X)按钮以显示Leave事件中的新屏幕或关闭当前屏幕

如何检测文本框中窗体/窗口控制框右上角的close(X)按钮的click事件?在此之前是否触发了Leave事件? 我不想知道CloseReason,FormClosing,FormClosing之类的东西,除非它们是不可避免的

我确实想检测用户是否单击了表单的X按钮。我的情况显然是,我有文本框和按钮。在TextBox\u Leave中有一个新屏幕打开,但当TextBox聚焦后,按下(X)按钮,Leave事件将首先触发,但我需要知道用户是否按下(X)按钮以显示Leave事件中的新屏幕或关闭当前屏幕


我不能使用上面提到的事件,因为它会在文本框离开后触发,但我想知道(X)执行文本框前按下按钮\u离开代码。

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

你有什么理由不想用表格结尾,或者我完全误解了你的问题?因为我会用这样的形式来解决它

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;
            }

}

消息框当然可以被代码替换,以停止当前由代码执行的任何正在进行的作业。但也许我误解了你的意思?

如果我理解正确,请尝试以下方法:

你(编辑过的)问题的答案是:“否”。首先触发TextBox.Leave事件,然后执行关闭(X)按钮的处理


但是,如果您不知道为什么要更改订单,我们无法提供有关此操作的更多信息。

我已经做出了决定​​我的问题中有些词有错。。。所以,我的情况很清楚,我有textBox和按钮在textBox\u Leave有一个新的屏幕打开,但当textBox被聚焦,然后按下(X)按钮,Leave事件会首先触发,但我需要知道用户是否按下(X)按钮从Leave事件显示新屏幕或关闭当前屏幕。我已经​​我的问题中有些词有错。。。所以,我的情况很清楚,我有textBox和按钮在textBox_Leave中,有一个新屏幕打开,但当textBox聚焦后,按下(X)按钮,Leave事件将首先触发,但我需要知道用户是否按下(X)按钮从Leave事件显示新屏幕或关闭当前屏幕。我不能使用Form1\u FormClosing,因为此事件将在休假事件后触发。我的问题与上述问题无关。谢谢你的问题在副本中得到了准确的回答。这个解决方案正从我这里起作用。。。私人学校是封闭的;受保护的覆盖无效WndProc(ref Message m){if(m.Msg==0x0010)//WM_Close isCloseClicked=true;base.WndProc(ref m);}——在文本框中{e.Cancel=true;this.Close();}
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
    }
}