VB.NET: DialogResult.No 没有关闭表格
VB.NET: DialogResult.No is not closing the form
使用消息框DialogResult.No关闭表单的条件未按预期执行。
formclosing 事件在关闭前询问用户是否保存文档。
以下是我的FormClosing事件。
Private Sub PDFViewSimple_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _
Handles Me.FormClosing
If doc.IsModified Then
Dim message As String = "The document is modified, would you like to save it?"
Dim caption As String = "File Not Saved"
Dim buttons As MessageBoxButtons = MessageBoxButtons.YesNo
Dim DefaultButton As MessageBoxDefaultButton = MessageBoxDefaultButton.Button1
Dim icon As MessageBoxIcon = MessageBoxIcon.Question
Dim result As DialogResult
' Displays A MessageBox.
result = MessageBox.Show(message, caption, buttons, icon, DefaultButton)
If (result = DialogResult.Yes) Then
Me.Save(Me.Text)
Me.Close()
ElseIf (result = DialogResult.No) Then
Me.Close() ''Should I replace with (Application.Exit)
End If
End If
End Sub
该代码有各种错误。首先,鉴于只有两个选项,使用 ElseIf
是没有意义的,尽管严格来说不是错误的。如果它不是 Yes
那么它必须是 No
,所以你只需要一个 Else
:
If (result = DialogResult.Yes) Then
Me.Save(Me.Text)
Me.Close()
Else
Me.Close()
End If
接下来,即使 Else
也毫无意义,因为无论结果如何,您都在调用 Close
。您需要做的就是检查 Yes
,执行任何特定于 Yes
的操作,然后调用 Close
而不管:
If (result = DialogResult.Yes) Then
Me.Save(Me.Text)
End If
Me.Close()
最后,您根本不应该调用 Close
。您在 FormClosing
事件处理程序中,因此表单已经关闭。如果您希望表单不关闭,您只需要做一些事情。所以,您只需要:
If (result = DialogResult.Yes) Then
Me.Save(Me.Text)
End If
如果您希望表单不关闭,那么您可以将 e.Cancel
设置为 True
。
使用消息框DialogResult.No关闭表单的条件未按预期执行。
formclosing 事件在关闭前询问用户是否保存文档。
以下是我的FormClosing事件。
Private Sub PDFViewSimple_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs) _
Handles Me.FormClosing
If doc.IsModified Then
Dim message As String = "The document is modified, would you like to save it?"
Dim caption As String = "File Not Saved"
Dim buttons As MessageBoxButtons = MessageBoxButtons.YesNo
Dim DefaultButton As MessageBoxDefaultButton = MessageBoxDefaultButton.Button1
Dim icon As MessageBoxIcon = MessageBoxIcon.Question
Dim result As DialogResult
' Displays A MessageBox.
result = MessageBox.Show(message, caption, buttons, icon, DefaultButton)
If (result = DialogResult.Yes) Then
Me.Save(Me.Text)
Me.Close()
ElseIf (result = DialogResult.No) Then
Me.Close() ''Should I replace with (Application.Exit)
End If
End If
End Sub
该代码有各种错误。首先,鉴于只有两个选项,使用 ElseIf
是没有意义的,尽管严格来说不是错误的。如果它不是 Yes
那么它必须是 No
,所以你只需要一个 Else
:
If (result = DialogResult.Yes) Then
Me.Save(Me.Text)
Me.Close()
Else
Me.Close()
End If
接下来,即使 Else
也毫无意义,因为无论结果如何,您都在调用 Close
。您需要做的就是检查 Yes
,执行任何特定于 Yes
的操作,然后调用 Close
而不管:
If (result = DialogResult.Yes) Then
Me.Save(Me.Text)
End If
Me.Close()
最后,您根本不应该调用 Close
。您在 FormClosing
事件处理程序中,因此表单已经关闭。如果您希望表单不关闭,您只需要做一些事情。所以,您只需要:
If (result = DialogResult.Yes) Then
Me.Save(Me.Text)
End If
如果您希望表单不关闭,那么您可以将 e.Cancel
设置为 True
。