MsgBox 出现多次
Posted
技术标签:
【中文标题】MsgBox 出现多次【英文标题】:MsgBox Appears Multiple Times 【发布时间】:2015-05-01 09:50:34 【问题描述】:我有一个这样的脚本,一旦用户单击单选按钮,就会出现消息框。但是,当我单击“否”对话框结果时,消息框会出现两次。我不知道为什么会这样。我不希望它显示两次。我知道必须有一个非常简单的方法来解决这个问题。 >.> 我也尝试返回函数,但没有运气。
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
Dim result As Integer = MessageBox.Show("message", "caption", MessageBoxButtons.YesNo)
If result = DialogResult.No Then
RadioButton1.Checked = False
ElseIf result = DialogResult.Yes Then
memoryh4x(&H160ED98, 1, 4)
End If
End Sub
【问题讨论】:
因为如果不是,请检查单选按钮,这样它会导致事件再次触发...继续单击否...您会看到... 【参考方案1】:您更改了 RadioButton Checked 属性,这会导致再次调用事件处理程序。
避免重新进入事件处理程序的最简单方法是通过全局变量
Dim inCheckedChanged As Boolean = False
......
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
Try
' If we could display the message box.....
if inCheckedChanged = False then
' Block the reexecution of the MessageBox when clicking NO
inCheckedChanged = True
Dim result As Integer = MessageBox.Show("message", "caption", MessageBoxButtons.YesNo)
If result = DialogResult.No Then
' Now, changing the property reenters the event handler
' but the global variable prevents to get a second messagebox
RadioButton1.Checked = False
ElseIf result = DialogResult.Yes Then
memoryh4x(&H160ED98, 1, 4)
End If
End If
Finally
InCheckedChanged = False
End Try
End Sub
请注意,我将所有内容都放在了 Try/Finally 块中。这样,如果有东西抛出异常,全局变量 InCheckedChanged 在退出事件处理程序之前总是重置为 false
【讨论】:
以上是关于MsgBox 出现多次的主要内容,如果未能解决你的问题,请参考以下文章