C# 使用X或“已创建”按钮关闭窗体
我有一个登录表单,我需要知道用户是按了表单上的X按钮,还是按了将他带到新表单的按钮。如果用户使用Alt+F4或X按钮关闭程序,则必须关闭程序 我尝试使用FormClosing事件来检查用户是按了X还是登录C# 使用X或“已创建”按钮关闭窗体,c#,winforms,C#,Winforms,我有一个登录表单,我需要知道用户是按了表单上的X按钮,还是按了将他带到新表单的按钮。如果用户使用Alt+F4或X按钮关闭程序,则必须关闭程序 我尝试使用FormClosing事件来检查用户是按了X还是登录 private void LogIn_FormClosing(object sender, FormClosingEventArgs e) { if (string.Equals((sender as Button).Name, @"loginButton"))
private void LogIn_FormClosing(object sender, FormClosingEventArgs e)
{
if (string.Equals((sender as Button).Name, @"loginButton"))
{
//some code
}
else
{
Close();
}
}
FormClosing事件处理程序接收包含属性CloseReason的FormClosingEventArgs参数,但在您的上下文中,这还不够。实际上,在这两种情况下(ALT+F4/X-Click或ButtonClick),参数都将包含一个与UserClosing相等的CloseReason 我建议你一个简单的解决办法。在button click处理程序中(您应该在表单上调用close操作,而不是在formclosing事件处理程序本身上),向表单的Tag属性添加如下内容:
private void Button1_Click(object sender, EventArgs e)
{
this.Tag = "ClosedByUser";
this.Close();
}
现在,在FormClosing中,检查此属性很简单
private void LogIn_FormClosing(object sender, FormClosingEventArgs e)
{
if (this.Tag != null)
{
// Button clicked
}
else
{
// other reasons
// Dp not call Close here, you are already closing
// if you don't set e.Cancel = true;
}
}
检查事件参数的属性。