我有一个这样的脚本,一旦用户点击单选按钮,消息框就会出现。但当我单击"No“对话框的结果时,消息框出现两次。我不知道为什么会这样。我不想让它显示两次。我知道一定有一种非常简单的方法来解决这个问题。>.>我也尝试过返回这个函数,但是没有成功。
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发布于 2015-03-01 04:00:31
您更改了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
https://stackoverflow.com/questions/28786162
复制相似问题