请教vb小问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 00:00:57
有十五个复选框控件,我把其中的十二个组成了一个控件数组,另外三个分别是"全选","反选"和"清空",这在很多应用程序里面是很常见的,我的代码基本能达到要求,但是不是很完美,我还想在一个都没选中的情况下禁用"清空",在全部选中的情况下禁用"全选",代码该怎么写,又该写在哪个事件下面,谢谢!

假设你的复选框控件数组的名称为 Check1,在控件数组单击事件中添加以下代码

Private Sub Check1_Click(Index As Integer)
Dim I As Long, nClear As Boolean, nAll As Boolean

For I = 0 To Check1.Count - 1
If Check1(I).Value = 1 Then nClear = True
If Check1(I).Value = 0 Then nAll = True
Next
清空.Enabled = nClear '改为你的 清空复选框 的名称
全选.Enabled = nAll '改为你的 全选复选框 的名称
End Sub

用一个变量n记录已选上的复选框数量,在Check1_click中加入:
If Check1(Index).Value=1 Then
n=n+1
Else
n=n-1
End If
If n=12 Then
禁“全选”
ElseIf n=0
禁“清空”
End If

那种不停地用循环检验是否全选的方法效率太低,不推荐。

在3个的复选框的Validate事件里检测value的值,如果全部都为0,则禁用“清空”,如果上全部>0,则禁用“全选”。
很简单的。