根据微软的说法:
“在Visual Basic 6.0中,当CheckBox状态在程序中被改变时,会触发Click事件。”
而这正是我不想要的。
我只希望当我点击复选框时才触发click事件,而不是在状态改变时触发。
有什么好的解决方法吗?
谢谢。
我只希望当我点击复选框时才触发click事件,而不是在状态改变时触发。
有什么好的解决方法吗?
谢谢。
当您从代码填充表单时,可以设置一个标志来忽略更改。如果代码组织不良,这可能会变得混乱。
表单级别:
Public IgnoreChange As Boolean
表单加载:
IgnoreChange = False
事件:
If IgnoreChange Then Exit Sub
frmReference.IgnoreChange = True
frmReference.Checkbox1.Checked = True
frmReference.IgnoreChange = False
代码应该只响应用户的操作。
不确定是否最佳,但一种方法是在以编程方式更改状态之前设置名为 IgnoreEvents 的变量,并将其设置为 true。然后,在事件处理程序中,如果该变量为 true,则只需退出事件处理程序而不执行任何操作。
Click
事件代码放在MouseDown
事件中。但是您需要手动设置checkstate
:Private Sub Check1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Check1.Value = IIf(Check1.Value = vbChecked, vbUnchecked, vbChecked)
' run other necessary code here
End Sub
ClickButton
方法来发送实际的点击,并更改所有其他代码以调用该方法而不是在各处发送实际的点击,这样至少会使它变得更容易。 - Hans Olsson