You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从SplitContainer中动态移除DataGridView?代码执行无报错但未生效

解决SplitContainer面板中DataGridView无法动态移除的问题

你这段代码的核心错误是移除控件的集合对象搞错了——你遍历的是scExspenses.Panel1.Controls(Panel1的控件集合),但执行移除操作时却调用了scExspenses.Controls.Remove(SplitContainer自身的根控件集合),而DataGridView实际是在Panel1的控件容器里,所以自然无法移除。

修正后的代码如下:

For i = scExspenses.Panel1.Controls.Count - 1 To 0 Step -1
    If TypeOf scExspenses.Panel1.Controls(i) Is DataGridView Then
        scExspenses.Panel1.Controls.Remove(scExspenses.Panel1.Controls(i))
    End If
Next

如果想让代码更清晰,也可以先把目标控件存入变量:

For i = scExspenses.Panel1.Controls.Count - 1 To 0 Step -1
    Dim targetCtrl = scExspenses.Panel1.Controls(i)
    If TypeOf targetCtrl Is DataGridView Then
        scExspenses.Panel1.Controls.Remove(targetCtrl)
    End If
Next

你采用倒序遍历控件集合的做法是正确的,这样能避免因移除控件导致集合索引变化引发的遍历异常,只要确保操作的是Panel1的控件集合即可。

内容的提问来源于stack exchange,提问作者rs-cci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:07:01