计算并获取 VB.NET 中选中复选框的所有值

Count and get all the value of checked checkboxes in VB.NET

假设我有一个表单,在我的表单下面有一个面板,在面板下面有一个组框,在组框下面有另一个面板,在这个面板下面有多个复选框,现在,我如何计算选中了多少个复选框以及如何获取选中复选框的值并将其放入数组列表中。我有密码,但不起作用。

我的代码:

        Dim list As New ArrayList
        Dim count As Integer
        count = 0
        If TypeOf element Is CheckBox Then

         If cb.Checked Then
            list.Add(cb.Text)
        'End If
        Else
            For Each childElement In element.Controls
               count += 1
            Next
        End If
        MsgBox(count)
        MsgBox(list)

非常感谢!任何帮助将不胜感激。对不起,你的英语不好。

Dim chk As CheckBox
For Each c As Control In thePanel.Controls

    if Typeof c is CheckBox then
     count += 1 // to count check boxes
        chk  =  Ctype(c, Checkbox)
        if chk.Checked Then
            list.Add(chk.Text) // to add the text of checkbox to array
        End If
    End If
Next

遍历内部面板中的所有控件并检查它们是否为复选框。如果是,并且已选中,请增加计数并将文本添加到列表中。我会使用通用 List(Of String) 而不是 ArrayList。

Dim count As Integer 
Dim myList As New List(Of String)
For Each cb As CheckBox In panel1.Controls.OfType(Of CheckBox)
    If cb.Checked Then
        count += 1
        myList.Add(cb.Text)
    End If
Next
MessageBox.Show(count.ToString)
MessageBox.Show(String.Join(", ", myList))

[编辑] 根据 Plutonix 的建议,代码被简化为使用 Controls.OfType(Of CheckBox) 仅循环遍历 CheckBox 类型的控件,

你可以使用递归来完成。试试这个。

        Private Sub getcheckme(ByVal element As Control)
        Dim count As Integer
        count = 0
        If TypeOf element Is CheckBox Then
            If DirectCast(element, CheckBox).Checked = True Then
                count += 1 'this will count the checked checkboxes
                list.Add(element.Text) ' this will add the value of checkboxes into arraylist
            End If
        Else
            For Each childElement In element.Controls
                Me.getcheckme(childElement)
            Next
        End If
        End Sub

只需使用以下方式调用它:Me.getcheckme(Me)