在另一个面板内删除面板

拉克

我有一个面板,里面有4个面板。内部面板的名称为“ XXXX | 1 | A”,“ XXXX | 1 | B”,“ XXXX | 1 | C”和“ XXXX | 1 | D”,如您所见,它们以最后一个字符来区分一封信。

在这种情况下,我要做的是始终只删除标识为A和B的面板。

这是我的代码。

Dim clickedLabel = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ContextMenuStrip).SourceControl, Panel)

pb = clickedLabel.Parent
Dim controls_number As Integer = pb.Controls.Count
Dim spliterb
Dim con As Control

For Each con In pb.Controls

    spliterb = con.Name.Split("|")

    If spliterb(2).ToString = ("A") Or spliterb(2).ToString = ("B") Then
       pb.Controls.Remove(con)
    End If

Next

如您所见,使用变量controls_number,我知道内部有4个面板,但是在进行排列时,它仅读取3,并且仅删除被标识为B的面板,而不会到达面板A。

您能向我解释为什么您不阅读这四个面板吗?有什么想法可以让我经历全部4个吗?

谢谢。

金西尼

For Each循环枚举列表时,请勿修改列表在这种情况下以及许多其他情况下,简单的解决方案是将所需的项目提取到一个单独的列表中并循环遍历,同时从原始列表中删除这些项目。因此,删除将不会对您要枚举的列表产生影响。在您的情况下,可能看起来像这样:

Dim panels = pb.Controls.
                OfType(Of Panel)().
                Where(Function(pnl) pnl.Name.EndsWith("|A") OrElse
                                    pnl.Name.EndsWith("|B")).
                ToArray()

For Each pnl In panels
    pnl.Dispose()
Next

CalliingDispose将从其父控件中删除该控件并正确处理它。如果您只是调用,Remove则不会处理该控件。除非您打算重用控件,否则那是不好的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

另一个单元内的聚合物芯-页眉-面板

Wicket-从另一个面板设置模型

另一个类的CardLayout更改面板

如何从另一个线程填充面板?

切换到另一个面板wxpython

如何使用java中另一个类的另一个面板更改面板的内容

按下按钮后,打开另一个面板中的另一个面板

如何从另一个面板更改卡布局面板?

如何使用方法调用在另一个面板中显示特定面板?

Total Commander:在另一个面板中复制面板的当前路径

如何将面板添加到另一个面板

一个JFrame中有两个面板,如何到达另一个面板的CardLayout?

尝试将一个面板替换为另一个面板时,JFrame崩溃

Java Swing-如何在另一个面板之上显示一个面板?

SenchaTouch-将项目从一个面板移动到另一个面板

Java JButton在一个面板中显示,但在另一个面板中不显示

当另一个子面板的值更改时,重新加载一个子面板

如何在手动关闭一个面板后自动关闭另一个面板

jQuery Mobile:如何从另一个页面调用一个页面中的面板

将文本从一个堆栈面板传输到另一个

通过单击另一个类中的按钮从面板内的事件处理程序关闭 wx.Dialog

当另一个面板正在动态移动Java swing时,如何自动正确调整面板的大小

Bootstrap 可折叠面板不会在另一个面板开口上折叠

Java GUI 为什么 BoxLayout 面板在有另一个 BoxLayout 面板时表现奇怪

如何在NetBean Java中的jframe中存在的另一个面板中的其他面板上单击按钮时显示面板

Bootstrap面板在另一个可折叠面板中折叠不正确的图标和可折叠面板

Java Swing:访问另一个类的面板组件

在按钮单击 c# 时以另一个窗口形式显示面板

以双向方式通过另一个变量重新排序面板,by() 图