使用X或创建的按钮关闭表单

时间:2019-03-17 17:11:48

标签: c# winforms

我有一个“登录”表单,我需要知道用户是否按下了表单上的X按钮或将他带到新表单的按钮。如果用户使用Alt + F4或X按钮关闭了程序,则必须关闭程序。

我正在尝试使用FormClosing事件来检查用户是否按下X或登录。

 private void LogIn_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (string.Equals((sender as Button).Name, @"loginButton"))
        {
            //some code
        }
        else
        {
            Close();
        }
    }

1 个答案:

答案 0 :(得分:1)

FormClosing 事件处理程序收到一个 FormClosingEventArgs 参数,该参数包含属性 CloseReason ,但是在您的上下文中,这还不够。
实际上,在两种情况下(ALT + F4 / X-Click或ButtonClick),该参数都将包含等于 UserClosing CloseReason

我建议您采用一种简单的解决方法。在按钮单击处理程序中(应在窗体上调用关闭动作,而不是在formclosing事件处理程序本身上),将某些内容添加到窗体的Tag属性中,如下所示:

#include <vector>
#include <boost/align/aligned_allocator.hpp>

template <typename T>
using aligned_vector = std::vector<T, boost::alignment::aligned_allocator<T, 16>>;
// 16 bytes aligned allocation

现在在FormClosing事件处理程序中很容易检查此属性

private void Button1_Click(object sender, EventArgs e)
{
    this.Tag = "ClosedByUser";
    this.Close();
}