【发布时间】:2021-07-25 13:21:50
【问题描述】:
我使用的表单具有根据所使用对象的类动态添加的控件。 为了将下一个对象加载到表单中,有必要删除并重建动态部分。 我在使用下面的代码删除对象时遇到随机结果,您能告诉我我的错误可能在哪里吗?
Sub CntrlKill(KillName As String)
For Each c In Me.Controls
If Strings.InStr(c.name, KillName) > 0 Then
Me.Controls.Remove(c)
End If
Next
End Sub
【问题讨论】:
-
KillName来自哪里?它是否代表控件的Name属性的部分匹配(因此您应该检查c.Name.Contains(KllName))?所有控件都是Me的子级(假设Me是表单的实例)?-顺便说一句,删除控件,调用c.Dispose(),而不是Controls.Remove(c)(除非这些控件是可重用的对象集合的一部分)。- 发布添加这些控件的代码。 -
这能回答你的问题吗? Removing controls in a loop
-
这能回答你的问题吗? foreach control c# skipping controls
-
永远不要使用 For Each 循环来枚举集合,然后在循环内修改该集合。那总是错的。
标签: vb.net