2016-12-05 17 views
0

私はプログラミングの初心者です。3つのチェックボックスと1つのテキストボックスがあります。それ以外の場合は0チェックボックスの妥当性確認

あるべき CheckBox1をとCheckBox2が確認された場合、その後のTextBox内のテキストが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 
    Else 
     TextBox1.Text = 0 
    End If 
End Sub 

これは、私はそれらのすべての3つを確認する場合を除いて動作しますが、 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

はCheckbox1.checkedオプションに= TRUEおよびCheckbox2.checked = Trueの – GNMercado

+0

電源を入れ厳格を使用してみてください - それは、Yが保存されます多くの悲しみ(そして簡単なSOの質問)。 'TextBox1.Text = 1'などが無効です – Plutonix

+0

@GNMercado試しましたが、うまくいきません。 – AAR

答えて

2

問題はご注文です。この場合:それはTrueであるために、ので、第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なり、すでにマッチしています。あなたは、最初の2つの条件を交換する必要があります:あなたはあまりにもAndAlsoではなくAndを使用する必要があります

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 

0

すべてのチェックボックスをグループにまとめることはできますか? 3つ以上のCheckBoxがチェックされている場合は、 とカウントして何かをします。今

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

End Sub 

キーワードを「ハンドル」の後に、それぞれをリストすることにより、3つのすべてのチェックボックスのための火災は(最初の行の末尾を参照してください右にスクロール)ハンドラを作成しますチェックされますどのように多くの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 
+0

残念ながら、OPはむしろ不明です。そのコードは最後の行で尋ねられたように行いますが、最後の行は以前に尋ねられたことと矛盾します。 – jmcilhinney