【问题标题】:VBNET Confuse Using Checkbox and Select CaseVBNET 混淆使用复选框和选择案例
【发布时间】:2014-12-16 14:23:06
【问题描述】:

我正在尝试通过选择多个复选框来做一些案例。

所以我想选择 2 个复选框(复选框 1 和 2)并使 linklabel1.text = Banana 然后是 3 个复选框(复选框 1、2 和 3)并使 linklabel2.text = Apple,总而言之,如果我选择复选框 1、2 和 3,则 linklabel1 和 2 将显示更改(显示香蕉和苹果)

这是我的快照

这是我尝试的,但没有任何反应

    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

【问题讨论】:

  • 您没有正确使用Select Case。这将更适合If/Else

标签: vb.net checkbox


【解决方案1】:

使用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

【讨论】:

    【解决方案2】:

    您的CASE 测试将CheckBox1 的值与数组fruit 进行比较。这在基本方面,彼此无关。当您在SELECT 中指定一个变量时,您必须在以下CASEs 中检查该变量可能出现的值。

    简单来说,这就是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
    

    【讨论】:

      【解决方案3】:

      不确定 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多