当前位置:编程学习 > VB >>

多个复选框如何判断选中了哪个

假设有5个复选框,选中了 3  5 然后执行相应的语句
代码要有效率简洁
Private Sub Check3_Click()
If Check3.Value = 1 And Check5.Value = 1 Then
'
End If
End Sub
Private Sub Check5_Click()
If Check3.Value = 1 And Check5.Value = 1 Then
'
End If
End Sub
用控件数组。
Private s As String
Private Sub Check1_Click(Index As Integer)
    Select Case Index
        Case 0
            s = "ID=1 "
        Case 1
            s = IIf(s <> "", s & " And", "") & " ID=2"
        Case 2
            s = IIf(s <> "", s & " And", "") & " ID=3"
        Case 3
            s = IIf(s <> "", s & " And", "") & " ID=4"
        Case 4
            s = IIf(s <> "", s & " And", "") & " ID=5"
    End Select
End Sub
Private Sub Command1_Click()
    Debug.Print s
End Sub


dim sum as integer =0

Private Sub Check1_Click()
IF Check1.checked then
    sum+=1
else
    sum-=1
End If
End Sub
Private Sub Check2_Click()
IF Check2.checked then
    sum+=2
else
    sum-=2
End If
End Sub
Private Sub Check3_Click()
IF Check3.checked then
    sum+=4
else
    sum-=4
End If
End Sub
Private Sub Check4_Click()
IF Check4.checked then
    sum+=8
else
    sum-=8
End If
End Sub
Private Sub Check5_Click()
IF Check5.checked then
    sum+=16
else
    sum-=16
End If
End Sub

private sub button1_click()
select case sum
case 1:1
case 2:2
case 3:1+2
case 4:3
case 5:1+3
case 6:2+3
case 7:1+2+3
case 8:4
case 9:1+4
case 10:2+4
case 11:1+2+4
case 12:3+4
case 13:1+3+4
case 14:2+3+4
case 15:1+2+3+4
case 16:5
end select
end sub


冒号后面的值代表了哪个复选框被选中,以此类推
引用 1 楼 yiguangqiang88 的回复:
VB code
Private Sub Check3_Click()
If Check3.Value = 1 And Check5.Value = 1 Then
'
End If
End Sub
Private Sub Check5_Click()
If Check3.Value = 1 And Check5.Value = 1 Then
'
End If
End Sub

这样就很简洁了,效率也不差 呃,漏掉了一部分。。。

select case sum
case 17:1+5
case 18:2+5
case 19:1+2+5
case 20:3+5
case 21:1+3+5
case 22:2+3+5
case 23:1+2+3+5
case 24:4+5
case 25:1+4+5
case 26:2+4+5
case 27:1+2+4+5
case 28:3+4+5
case 29:1+3+4+5
case 30:2+3+4+5
case 31:1+2+3+4+5
end select

用控件数组。标题放些有意义的东西。
Dim obj As Control
For Each obj In Me.Controls
    If TypeName(obj) = "CheckBox" Then
        Select Case obj.Caption
            Case "3"
                'to do
            Case "5"
                'to do
        End Select
    End If
Next
引用 8 楼 sysdzw 的回复:
VB code
Dim obj As Control
For Each obj In Me.Controls
    If TypeName(obj) = "CheckBox" Then
        Select Case obj.Caption
            Case "3"
                'to do
            Case "5"
 ……
  这和空间数组都可以 用控件数组最简洁了,所有都在一个过程里完成。

Private Sub Command2_Click()
   Dim i As Integer, tF As String
   For i = 1 To 5
      If Me("check" & i).Value = 1 Then
        tF = tF & 1
      Else
        tF = tF & 0
      End If
   Next
   Select Case tF
       Case Is = "00000"
        ''''''''''''''''''''''''
        ''''''''''''''''''''''''
       Case Is = "00101"
            Print "check3 ,check5=true"
       Case Else
            ''''''''''''''''''''''
   End Select
   
       
End Sub

本帖最后由 bcrun 于 2011-03-15 12:07:06 编辑
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,