感谢所有努力回答我问题的人。
我正在使用 WinForms C#,在 MainForm_Load 上,我正在为用户调用登录表单。登录表单包含 X 按钮(右上角的默认按钮)和登录按钮。
现在...
如果用户决定单击 X 按钮,登录表单将关闭,MainForm 也应该关闭,我知道该怎么做。但是...如果用户单击 LoginButton,LoginForm 应该关闭,但 MainForm 应该保持打开状态。
知道怎么做吗?
假设您正在使用ShowDialog
显示登录表单,那么您可以这样做:
if(LoginForm.ShowDialog() == DialogResult.OK)
{
//login ok
}
您的登录表单应在关闭之前将 DialogResult 设置为 OK,但仅用于成功登录,如下所示:
if(LoginSuccess){
this.DialogResult = DialogResult.OK;//this will also close the form
}
您可以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 。
这是另一种选择:
您可以通过将登录表单的ControlBox属性设置为False来禁用登录表单中的 X 按钮
在登录按钮的单击事件处理程序上,添加对 this.Close() 的调用
这应该关闭登录表单,而不影响主表单。