DialogResult 的设置是否对通过 ShowDialog() 显示的窗体有影响?

Has setting of DialogResult closing effect on form displayed via ShowDialog()?

经过一些更改后,我的应用程序开始出现异常行为:登录表单显示为

If DialogResult.OK <> New frmLogin().ShowDialog() Then ...

在包含标记为'problem的行时自动关闭。如果我发表评论,它会保持打开状态(因为它在更改之前有效),直到我手动调用 Me.Close()

Private Sub Login_Click()
    If My.Application.appSession.ID > 0 Then
        Me.DialogResult = Windows.Forms.DialogResult.OK
        Me.Close()
    Else
        Me.DialogResult = Windows.Forms.DialogResult.Abort 'problem
        MsgBox("Invalid user name or password.", MsgBoxStyle.Critical)
    End If
End Sub

您是否观察到所描述的行为,DialogResult 属性 的纯粹设置值会关闭对话框?

要保持​​表格显示你需要这样设置

Me.DialogResult = Windows.Forms.DialogResult.None

所有其他设置都会导致表单关闭。

在表格 class 中,您可以阅读有关 DialogResult 属性

If the form is displayed as a dialog box, setting this property with a value from the DialogResult enumeration sets the value of the dialog box result for the form, hides the modal dialog box, and returns control to the calling form