【发布时间】:2019-03-19 16:15:05
【问题描述】:
使用消息框 DialogResult.No 关闭表单的条件未按预期执行。
formclosure 事件在关闭前询问用户是否保存文档。
以下是我的 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
【问题讨论】:
-
永远不要在 FormClosing 的事件处理程序中调用 Close(),这会导致事件再次被触发。表单已经在关闭的路上,所以只需删除这些调用。
-
点击“No”后一直显示消息,因为使用的是“Me”,Handle。
-
感谢汉斯帕桑特。我明白了。
标签: vb.net messagebox dialogresult