我想切换全选/取消全选复选框。示例:
如果列表视图中的所选项目总数等于列表视图中的总项目,则全选/取消全选复选框将被检查,如果没有,则取消选中全选/取消全选复选框
Dim c,listcount As Integer
listcount = ListView1.ListItems.Count
If c = listcount Then
CheckBox1.Value = True
Else
CheckBox1.Value = False
End If
我选择和取消全选的代码很好,当您选中或取消选中全选/取消全选复选框时,列表视图中的所有项目也会选中或取消选中。当所选项目总数等于列表视图中的总项目时,上面的代码将切换全选/取消全选复选框,并通过检查或单击列表视图中的项目来触发,但问题是它还触发我的全选/取消全选复选框的代码,这将导致取消选中listview中的所有列表项。
有人可以帮我这个吗?
这是我的代码全选/取消全选复选框:
Private Sub CheckBox1_Click()
'check if this is already check or not
If CheckBox1.Value = True Then
seldesel (True)
Else
seldesel (False)
End If
End Sub
Function seldesel(a As Boolean)
listcount = ListView1.ListItems.Count
For X = 1 To listcount
ListView1.ListItems(X).Checked = a
Next X
End Function
答案 0 :(得分:2)
为防止发生CheckBox1_Click子例程,您可以将触发器从Click更改为CheckBox1_MouseDown。这样,只有当用户手册用鼠标检查它时,它才会运行它的代码。
此外,在MouseDown中,代码在实际检查框之前运行。要修复代码,请更改此行:
If CheckBox1.Value = True Then
只需这个
If CheckBox1.Value = False Then
希望这有帮助。