各位高手快来帮忙看一段代码!关于复选框的!
***这两天,问题太多,初学vb,分不多了,万望见谅!***
谁能帮忙看看这段代码:
Private Sub Check2_Click(index As Integer)
If Check2(index).Value = 1 Then
Select Case index
Case 0
For Num = 3 To 6
Check2(Num).Value = 2
Next
Check2(1).Value = 0
Case 1
For Num = 3 To 6
Check2(Num).Value = 2
Next
Check2(0).Value = 0
Case 2
Check2(3).Value = 0
Case 3
Check2(2).Value = 0
Case 4
Check2(5).Value = Check2(6).Value = 0
Case 5
Check2(4).Value = Check2(6).Value = 0
Case 6
Check2(4).Value = Check2(5).Value = 0
Case 7
Check2(8).Value = 0
Case 8
Check2(7).Value = 0
Case Else
Check2(0).Value = Check2(1).Value = 2
End Select
End If
End Sub
我使用的都是图片复选框(style=picture)
出现的错误(和预想的不一样):
1、点击check2(0)和check(1),check(3)~check(6)并不能变灰,而且还可以选择;
2、如果我不用check2(3).value=2,而是利用enabled=false来使其变灰,这样可以,但出现新的问题,再次点击check2(0)使其弹起来的时候(即未选中),那几个按钮还是灰(不能用),如何再使其可以使用?
3、index=4,5,6这三个选项只能选择一个,我上述代码中,老出错!谁有什么好的办法?
4、根据上面我很垃圾的代码哪位高手能帮我精简一下啊。。。
谢谢各位大哥大姐了!!!
------解决方案--------------------
理清思路,好象没必要这么麻烦吧,楼主。
不过帮你顶一下!
[解决办法]
Private Sub Check2_Click(index As Integer)
If Check2(index).Value = 1 Then
Select Case index
Case 0, 1
Check2(1 - index).Value = 1 - Check2(index).Value
Case 2, 3
Check2(5 - index).Value = 1 - Check2(index).Value
Case 4, 5, 6
For i = 4 To 6
If i <> index Then Check2(i).Value = 0
Next
Case 7, 8
Check2(15 - index).Value = 1 - Check2(index).Value
Case Else
End Select
End If
If index = 0 Or index = 1 Then
For Num = 3 To 6
Check2(Num).Enabled = Check2(index).Value - 1
Next
End If
End Sub
[解决办法]
If index = 0 Or index = 1 Then
For Num = 3 To 6
Check2(Num).Enabled = Check2(index).Value - 1
Next
End If
=================================================================
If index = 0 Or index = 1 Then
For Num = 3 To 6
Check1(Num).Enabled = IIf(Check1(index).Value = 0, True, False)
Next
End If
[解决办法]
如果是每两个只能同时选一个的话很简单,不知我理解错了没有:
Private Sub Check2_Click(Index As Integer)
Static n As Integer
If n = 1 Then n = 0: Exit Sub '改变checkBox的值会触发click事件
Check2((Index \ 2) * 2 + 1 - (Index Mod 2)).Value = 1 - Check2(Index).Value
End Sub
搞定。