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
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.