Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何知道用户是否在表单中单击了X_C#_Winforms - Fatal编程技术网

C# 如何知道用户是否在表单中单击了X

C# 如何知道用户是否在表单中单击了X,c#,winforms,C#,Winforms,感谢所有努力回答我问题的人 我正在使用WinForms C,在MainForm_加载时,我正在为用户调用登录表单。登录表单包含X按钮、右上角的默认按钮和Loginbutton 现在 如果用户决定点击X按钮,登录表单就会关闭,主表单也会关闭,我知道怎么做。但是如果用户单击LoginButton,则LoginForm应关闭,但MainForm应保持打开状态 你知道怎么做吗?你可以在Form.FormClosing事件中检查e.CloseReason 如果单击X或用户按Alt+F4,则用户将关闭。假设

感谢所有努力回答我问题的人

我正在使用WinForms C,在MainForm_加载时,我正在为用户调用登录表单。登录表单包含X按钮、右上角的默认按钮和Loginbutton

现在

如果用户决定点击X按钮,登录表单就会关闭,主表单也会关闭,我知道怎么做。但是如果用户单击LoginButton,则LoginForm应关闭,但MainForm应保持打开状态

你知道怎么做吗?

你可以在Form.FormClosing事件中检查e.CloseReason

如果单击X或用户按Alt+F4,则用户将关闭。

假设您使用ShowDialog显示登录表单,则可以执行以下操作:

if(LoginForm.ShowDialog() == DialogResult.OK)
{
   //login ok
}
您的登录表单应在关闭DialogResult之前将其设置为OK,但仅适用于成功登录,如下所示:

if(LoginSuccess){
    this.DialogResult = DialogResult.OK;//this will also close the form
}

在登录按钮的click事件处理程序上,添加对此的调用。关闭


这将关闭登录表单,而不影响主表单。

这是一个可选选项:


您可以通过将登录表单的ControlBox属性设置为False来禁用登录表单中的X按钮

如何显示登录表单?您不需要关闭调用;设置DialogResult会自动隐藏表单并将执行返回到ShowDialog行。@Idle\u Mind:Huh。。。我从来不知道。但我不喜欢它,这不是我期望的设置属性的行为
if(LoginSuccess){
    this.DialogResult = DialogResult.OK;//this will also close the form
}