我是编程初学者我有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,并做了一些事情。
答案 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