如何检测此前触发的TextBox_Leave事件中窗体/窗口控件框右上角的关闭(X)按钮的单击事件? 我不想知道关于CloseReason,FormClosing,FormClosed或类似的东西,除非它们是不可避免的。
我确实想检测用户是否点击了表单的X按钮。我的情况显然是我有textBox和Button。在TextBox_Leave中有一个新的Screen已经打开但是当textBox聚焦时然后按(X)按钮离开事件Fire然后我需要知道如果用户按(X)按钮或不显示从离开事件或关闭当前屏幕的新屏幕
我无法使用上述事件,因为它会在TextBox_Leave之后触发但是我想知道在执行TextBox_Leave代码之前是否按下了(X)按钮。
答案 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)按钮。但是,如果不知道为什么要翻转订单,我们就无法提供更多信息。