加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb.net – 删除GroupBox中的控件

发布时间:2020-12-17 07:19:29 所属栏目:百科 来源:网络整理
导读:我创建了一个组合框,然后在运行时使用按钮填充它.我还创建了一个按钮,比如Button1循环浏览组框并删除这些按钮.这是我的代码 对于Button1: Public Sub removeControls() For Each ctrl As Control In GroupBox1.Controls GroupBox1.Controls.Remove(ctrl) ct
我创建了一个组合框,然后在运行时使用按钮填充它.我还创建了一个按钮,比如Button1循环浏览组框并删除这些按钮.这是我的代码
对于Button1:

Public Sub removeControls()
    For Each ctrl As Control In GroupBox1.Controls
        GroupBox1.Controls.Remove(ctrl)
        ctrl.Dispose()
    Next 
End Sub

Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles Button1.Click
    removeControls()
End Sub

执行时,它只删除GroupBox1中的一些控件,而不是全部.你能解释我的代码中缺少什么使它工作吗?谢谢.

解决方法

当您删除For Each循环中的控件时,实际上是在修改您尝试循环的集合.当您删除集合中的第一个项目时,第二个项目将向上移动成为第一个项目.但是现在,当你到达循环的第二个索引时,第三个项目就在它的位置.您已经有效地跳过删除第二项,只删除了第一项和第三项.等等整个循环.

相反,您需要以相反的顺序遍历控件并删除每个索引处的项目.通过开始从最后删除项目,您不会影响项目的顺序或位置.

所以,只需将您的方法更改为以下内容:

Public Sub RemoveControls()
    For i As Integer = (GroupBox1.Controls.Count - 1) To 0 Step -1
        Dim ctrl As Control = GroupBox1.Controls(i)
        GroupBox1.Controls.Remove(ctrl)
        ctrl.Dispose()
    Next i
End Sub

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读