2016-12-05 8 views
0

Ich bin ein Anfänger bei der Programmierung Ich habe 3 CheckBoxes und 1 TextBox. Wenn CheckBox1 und checkbox2 geprüft werden, dann wird der Text in dem Text 1 sein sollte, sonst sollte es 0.Kontrollkästchen validieren

sein Das ist mein Code:

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 

Dies funktioniert, außer wenn ich alle drei von ihnen überprüft, die TextBox ändert sich nicht zu 0 und ist immer noch 1. Wie löse ich das? Ich habe versucht, meinen Code zu ändern

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 

Ist es möglich, alle Kontrollkästchen in einem Array zu gruppieren? Dann werde ich zählen, wenn mehr als 2 CheckBoxes überprüft werden, und etwas tun.

+0

Versuchen sie es mit Checkbox1.checked = True AND Checkbox2.checked = True – GNMercado

+0

Schalten sie Option Strict - es wird y sparen oo viel Kummer (und einfache SO-Fragen). 'TextBox1.Text = 1' und ähnliches ist nicht gültig – Plutonix

+0

@GNMercado Ich habe es versucht, aber es funktioniert nicht. – AAR

Antwort

2

Das Problem ist Ihre Bestellung. In diesem Fall:

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 

Die zweite Bedingung wird nie da getestet werden, denn es True, die erste Bedingung True sein sein und hat bereits abgestimmt. Sie müssen die ersten beiden Bedingungen tauschen:

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 

Sie AndAlso statt And zu verwenden sollten.

0

Ist es möglich, alle Kontrollkästchen in einem Array zu gruppieren? Dann werde ich zählen, wenn mehr als 2 CheckBoxes überprüft werden, und etwas tun.

Machen ein-Handler, der ausgelöst wird für alle drei Kontrollkästchen, indem jeder eine nach der „Handles“ Stichwort Auflistung (nach rechts scrollen das Ende der ersten Zeile zu sehen):

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

End Sub 

Jetzt zählen, wie viele der Kontrollkästchen aktiviert sind und entsprechend handeln:

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 
+0

Leider ist das OP eher unklar. Dieser Code wird tun, wie in der letzten Zeile gefragt, aber diese letzte Zeile widerspricht dem, was früher gefragt wurde. – jmcilhinney

Verwandte Themen