***这两天,问题太多,初学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、根据上面我很垃圾的代码哪位高手能帮我精简一下啊谢谢各位大哥大姐了!!!

解决方案 »

  1.   

    谢谢“寒心泪”!这个东西搞不完,老板不让回家啊郁闷ing一共十个复选框图标,不想把它们分为几组,如果分为几组可能会简单一点,但是后面的程序还会使它们的功能变化,所以作为一个数组处理的!问题简单化:
    0和1,2和3,4、5和6,7和8分别是四组按钮,每一组就像一组单选框,一个按下,另一个弹起,如何实现,谁能贴个代码出来?
      

  2.   

    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
      

  3.   

    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
      

  4.   

    如果是每两个只能同时选一个的话很简单,不知我理解错了没有: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搞定。
      

  5.   

    忙中出错阿:修改一下Private Sub Check1_Click(Index As Integer)
    Static n As Integer
    If n = 1 Then n = 0: Exit Sub '改变checkBox的值会触发click事件
    n = 1
    Check1((Index \ 2) * 2 + 1 - (Index Mod 2)).Value = 1 - Check1(Index).Value
    End Sub或者:Private Sub Check1_Click(Index As Integer)
    Check1((Index \ 2) * 2 + 1 - (Index Mod 2)).Value = 1 - Check1(Index).Value
    '这样每点击一次会执行两次,第二次没有改变值,所以没有再触发click事件
    End Sub