研究发现CheckBox1改变值会激发CheckBox1_Click()事件,而ListBox1改变状态也会激发ListBox1_Change()事件,这是一个很麻烦的问题。通过设置变量来取消事件的执行是解决上述问题的关键。理解有限,望大家探讨一下。 这是实现的代码,请参考。 Dim Cnt As Integer, i As Integer
Dim ChkClick As Boolean
Dim lstChange As Boolean
Dim Chkval As Boolean
Private Sub CheckBox1_Click()
If ChkClick Then
lstChange = False
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = CheckBox1.Value
Next i
lstChange = True
End If
End Sub Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Cnt = ListBox1.ListCount - 1
If lstChange Then
If CheckBox1.Value = False Then
For i = 0 To Cnt
If ListBox1.Selected(i) = False Then
Exit For
Else
If i = Cnt Then
ChkClick = False
CheckBox1.Value = True
ChkClick = True
End If
End If
Next i
Else
If ListBox1.Selected(ListBox1.ListIndex) = False Then
ChkClick = False
CheckBox1.Value = False
ChkClick = True
End If
End If
End If
End Sub |