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

时间:2013-05-21 12:17:45

标签: c# winforms

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

我正在使用WinForms C#,在MainForm_Load上,我正在为用户调用Login表单。 Login窗体包含X按钮(右上角的默认按钮)和Login按钮。

现在...

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

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

假设您使用ShowDialog来显示登录表单,那么您可以这样做:

if(LoginForm.ShowDialog() == DialogResult.OK)
{
   //login ok
}

您的登录表单应该在关闭之前将DialogResult设置为OK,但仅限于成功登录,如下所示:

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

答案 1 :(得分:3)

您可以在e.CloseReason活动中查看Form.FormClosing

Private Sub YourForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    If e.CloseReason = CloseReason.UserClosing Then
        'Closed by user
        '
        'Do something like
        'Application.Exit()
        '
        'or close both forms
    Else
        'Other close reason
    End If
End Sub

如果单击X或用户按下Alt + F4,CloseReason将为UserClosing。

答案 2 :(得分:2)

这是另一种选择:

您可以通过将登录表单的 ControlBox 属性设置为 False

来禁用登录表单中的X按钮

答案 3 :(得分:0)

在“登录”按钮的单击事件处理程序中,添加对this.Close()

的调用

这应该关闭Login表单,而不会影响Main表单。