使用Checkbox和Select Case的VBNET混淆

时间:2014-12-16 04:20:56

标签: vb.net checkbox

我正在尝试选择多个复选框。

所以我想选择2复选框(checkbox1和2)并制作linklabel1.text = Banana 然后3复选框(checkbox1,2和3)并制作linklabel2.text = Apple,总之如果我选择checkbox1,2和3,linklabel1和2将显示更改(香蕉和Apple显示)

这是我的快照form snapshot

这就是我尝试的,但没有任何事情发生

    Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
    Dim fruit() As String = {"Banana", "Apple", "Orange"}
    Select Case fruit.ToString
        Case CheckBox1.Checked And CheckBox2.Checked 
            LinkLabel1.Text = fruit(0)
        Case CheckBox1.Checked And CheckBox2.Checked And CheckBox3.Checked
            LinkLabel2.Text = fruit(1)
    End Select
End Sub

3 个答案:

答案 0 :(得分:0)

使用Select Case fruit.ToString不正确。您想要检查复选框而不是水果字符串。

你应该使用IF语句:

Dim fruit() As String = {"Banana", "Apple", "Orange"}

If CheckBox1.Checked And CheckBox2.Checked Then
    LinkLabel1.Text = fruit(0)
End If
If CheckBox1.Checked And CheckBox2.Checked And CheckBox3.Checked Then
    LinkLabel2.Text = fruit(1)
End If

这也可以:

Dim fruit() As String = {"Banana", "Apple", "Orange"}

If CheckBox1.Checked And CheckBox2.Checked Then
    LinkLabel1.Text = fruit(0)

    If CheckBox3.Checked Then
        LinkLabel2.Text = fruit(1)
    End If
End If

答案 1 :(得分:0)

您的CASE测试正在将CheckBox1的值与数组fruit进行比较。从基本的角度来说,与彼此无关。在SELECT中指定变量时,必须检查以下CASE中该变量可能出现的值。

简单来说,这就是SELECT/CASE的工作原理

Select Case drink
  Case "water"
      MsgBox("the variable [drink] has the value [water]")
  Case "cola"
      MsgBox("the variable [drink] has the value [cola]")

End Select

在你的情况下,你做了类似

的事情
Select Case drink
    Case weather.IsHot
          'no logic in comparing [drink] with [weather.IsHot] because 
          'this is equivellent CASE TRUE/FALSE
    Case car.IsRed
          'same as above
    Case food.IsSalty And phone.IsRinging
          'same as above
End Select

因此,您需要修改以使代码正常工作:

If CheckBox1.Checked And CheckBox2.Checked Then
            LinkLabel1.Text = fruit(0)
ElseIf CheckBox1.Checked And CheckBox2.Checked And CheckBox3.Checked Then
            LinkLabel2.Text = fruit(1)
End

答案 2 :(得分:0)

不确定LinkLabel4如何适应图片......

...但根据你的解释,我会这样做:

Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
    Dim fruit() As String = {"Banana", "Apple", "Orange"}
    Dim LLs() As LinkLabel = {LinkLabel1, LinkLabel2, LinkLabel3}
    Dim CBs() As CheckBox = {CheckBox1, CheckBox2, CheckBox3, CheckBox4}

    For Each LL As LinkLabel In LLs
        LL.Text = ""
    Next
    If CheckBox1.Checked Then
        For i As Integer = 1 To CBs.Length - 1
            If CBs(i).Checked Then
                LLs(i - 1).Text = fruit(i - 1)
            Else
                Exit For
            End If
        Next
    End If
End Sub