【问题标题】:Count and get all the value of checked checkboxes in VB.NET计算并获取 VB.NET 中选中复选框的所有值
【发布时间】:2015-03-26 20:22:41
【问题描述】:

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

我的代码:

        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)

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

【问题讨论】:

  • 我不明白该代码的作用。它在循环中吗?元素从何而来?似乎您所要做的就是迭代thePanel.Controls,其中thePanel 是带有所有复选框的面板。复选框也没有“价值”,所以我不确定这是什么意思

标签: vb.net visual-studio-2010 checkbox


【解决方案1】:

遍历内部面板中的所有控件并检查它们是否为 CheckBoxes。如果是,并且它们被选中,则增加计数并将文本添加到列表中。我会使用通用 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 类型的控件,

【讨论】:

  • 您可以使用For Each chk As CheckBox In panel1.Controls.OfType(Of CheckBox)()进行简化
  • 好点@Plutonix 如果你不介意我会做出改变。
【解决方案2】:

你可以使用递归来做到这一点。试试这个。

        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)

【讨论】:

    【解决方案3】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 2012-01-20
      相关资源
      最近更新 更多