checking multiple checkbox check status

tranand3@gmail.com

New member
Joined
May 7, 2011
Messages
1
Programming Experience
Beginner
Hi,
I have 5 checkboxes in total.I want to check how many checkboxes have been checked.I dont want to write checkbox1.checkstate,checkbox2.checkstate and so on...How do I accomplish this effectively?
 
First up, you wouldn't use the CheckState property at all. CheckState is only used if you are interested in all three states. If you're not interested in Indeterminate then you use the Checked property.

As for the question, in .NET 3.5 or later, I would suggest using LINQ, e.g.
Dim checkedCount = {Me.CheckBox1, Me.CheckBox2, Me.CheckBox3, Me.CheckBox4, Me.CheckBox5}.Count(Function(cb) cb.Checked)
In earlier versions, you can handle the CheckedChanged event and update a member variable, e.g.
Dim checkedCount As Integer

Private Sub CheckBoxes_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox5.CheckedChanged, _
                                                                                              CheckBox4.CheckedChanged, _
                                                                                              CheckBox3.CheckedChanged, _
                                                                                              CheckBox2.CheckedChanged, _
                                                                                              CheckBox1.CheckedChanged
    If DirectCast(sender, CheckBox).Checked Then
        Me.checkedCount += 1
    Else
        Me.checkedCount -= 1
    End If
End Sub
You might also use a loop. The equivalent to the first LINQ code would be:
Dim checkedCount As Integer

For Each cb In New CheckBox() {Me.CheckBox1, Me.CheckBox2, Me.CheckBox3, Me.CheckBox4, Me.CheckBox5}
    If cb.Checked Then
        checkedCount += 1
    End If
Next
or, if the controls are indeed named sequentially, you could do like this:
Dim checkedCount As Integer

For i As Integer = 1 To 5
    Dim cb As CheckBox = DirectCast(Me.Controls("CheckBox" & i), CheckBox)

    If cb.Checked Then
        checkedCount += 1
    End If
Next
 
Back
Top