验证复选框

时间:2016-12-05 00:30:56

标签: vb.net checkbox

我是编程初学者我有3个CheckBoxes和1个TextBox。 选中CheckBox1和CheckBox2时,TextBox中的文本应为1,否则应为0.

这是我的代码:

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged,
    CheckBox2.CheckedChanged

    If CheckBox1.Checked And CheckBox2.Checked Then
       TextBox1.Text = 1
    Else
       TextBox1.Text = 0
    End If
End Sub

除非我检查了所有这三个,否则TextBox不会更改为0并且仍然是1.我如何解决此问题?我试图将代码更改为

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged,
    CheckBox2.CheckedChanged

    If CheckBox1.Checked And CheckBox2.Checked Then
       TextBox1.Text = 1
    ElseIf CheckBox1.Checked And CheckBox2.Checked And Checkbox3.Checked Then
       TextBox1.Text = 0
    Else
       TextBox1.Text = 0
    End If
End Sub

是否可以将数组中的所有复选框分组?然后我将计算是否检查了2个以上的CheckBox,并做了一些事情。

2 个答案:

答案 0 :(得分:2)

问题在于您的订单。在这种情况下:

If CheckBox1.Checked And CheckBox2.Checked Then
   TextBox1.Text = 1
ElseIf CheckBox1.Checked And CheckBox2.Checked And Checkbox3.Checked Then
   TextBox1.Text = 0
Else
   TextBox1.Text = 0
End If

第二个条件永远不会被测试,因为它是True,第一个条件也是True并且已经匹配。您需要交换前两个条件:

If CheckBox1.Checked And CheckBox2.Checked And Checkbox3.Checked Then
   TextBox1.Text = "0"
ElseIf CheckBox1.Checked And CheckBox2.Checked Then
   TextBox1.Text = "1"
Else
   TextBox1.Text = "0"
End If

您应该使用AndAlso而不是And

答案 1 :(得分:0)

  

是否可以将数组中的所有复选框分组?然后我会数数   如果选中了2个以上的CheckBox,并做了一些事情。

通过在" Handles"之后列出每个CheckBox,为所有三个CheckBox创建一个一个处理程序。关键字(向右滚动以查看第一行的结尾):

Private Sub CheckBoxes_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged

End Sub

现在计算检查了多少个CheckBox并采取相应措施:

Private Sub CheckBoxes_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged
    Dim CheckCount As Integer
    Dim CheckBoxes() As CheckBox = {CheckBox1, CheckBox2, CheckBox3}
    For Each CB As CheckBox In CheckBoxes
        If CB.Checked Then
            CheckCount = CheckCount + 1
        End If
    Next
    TextBox1.Text = If(CheckCount >= 2, 1, 0)
End Sub