【问题标题】:Unchecked all checkbox in a form inside a groupbox inside a panel and another panel取消选中面板和另一个面板内的组框内的表单中的所有复选框
【发布时间】:2015-03-26 17:37:03
【问题描述】:

我已经厌倦了清除表单中另一个面板内的组框内的所有复选框。我有一个代码可以清除 panel221 内表单中的所有复选框。

For Each element As Control In Me.Panel221.Controls
        If TypeOf element Is CheckBox Then
            DirectCast(element, CheckBox).Checked = False
        End If
Next

我不知道为什么我不能仅使用此代码清除表单中的所有复选框。

For Each element As Control In Me.Controls
            If TypeOf element Is CheckBox Then
                DirectCast(element, CheckBox).Checked = False
            End If
Next

这是我的表单的结构:

-FORM
 -PANEL 1
  -GroupBox 1
   -PANEL 2
     -PANEL 3
       * Several CheckBox inside another panel
     -END OF PANEL 3
   -END OF PANEL 2
  -END OF GROUPBOX 1
   'Another groupbox
  -GroupBox 2
   -PANEL 4
     -PANEL 5
       * Several CheckBox inside another panel
     -END OF PANEL 5
   -END OF PANEL 4
  -END OF GROUPBOX 2
 -END OF PANEL 1
-END OF FORM

如何清除或取消选中多个组框和面板下的所有复选框?

【问题讨论】:

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


    【解决方案1】:

    Me.Controls 仅包含直接子代,不包含其子代的子代,依此类推。为了做你想做的事,你必须使用递归函数:

    Private Sub UncheckRecursive(ByVal element As Control)
        If TypeOf element Is CheckBox Then
            DirectCast(element, CheckBox).Checked = False
        Else
            For Each childElement In element.Controls
                Me.UncheckRecursive(childElement)
            Next
        End If
    End Sub
    

    那你这样称呼它:me.UncheckRecursive(me)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2010-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多