3

根据微软的说法:“在 Visual Basic 6.0 中,当 CheckBox 状态以编程方式更改时会引发 Click 事件。”这正是我不想要的。

我希望单击事件仅在我单击复选框时引发,而不是在状态更改时引发。

知道怎么做吗?

谢谢

4

3 回答 3

4

您可以在从代码填充表单时设置一个标志以忽略更改。如果代码组织得不好,这可能会变得混乱。

表格级别:

  Public IgnoreChange As Boolean

表单加载:

  IgnoreChange = False

事件:

  If IgnoreChange Then Exit Sub

你的代码:

  frmReference.IgnoreChange = True
  frmReference.Checkbox1.Checked = True
  frmReference.IgnoreChange = False

代码应该只响应用户操作

于 2013-10-02T12:46:40.313 回答
3

不确定这是否是最好的方法,但一种方法是使用一个名为 IgnoreEvents 之类的变量,并在以编程方式更改状态之前将其设置为 true。然后在事件处理程序中,如果该变量为真,您只需退出事件处理程序而不做任何事情。

于 2013-10-02T12:33:45.463 回答
2

而是将您的Click事件代码放入事件中MouseDown。不过,您必须手动设置检查状态:

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
于 2013-10-02T14:25:29.323 回答