【问题标题】:Removing control from panel doesn't remove it from the Form?从面板中删除控件不会将其从表单中删除?
【发布时间】:2012-01-10 05:53:11
【问题描述】:

我有一个例程,在该例程中递归遍历表单上的所有控件并处理其中一些控件上的一些代码。

我根据用户所做的选择使用屏幕添加和删除控件。

我发现panel.Controls.Remove(control1) 实际上并没有从表单中删除它。当我运行递归循环遍历表单上的控件的例程时,我认为我已经删除的控件仍然被发现。

直到我做到了,它才“消失”:

panel.Controls.Remove(control1);
this.Controls.Remove(control1)

这是预期的吗?有人可以向我解释一下吗,或者指出我在某个地方可以解释 Windows 窗体中的控制行为。

谢谢!

【问题讨论】:

  • 很确定这是不是预期的行为。当您说它“仍在被发现”时,您的意思是您仍然可以在屏幕上看到它吗?您确定在您调用Remove 方法后表单已被重绘(重绘)吗?
  • 您是否尝试将它们包含在SuspendLayoutResumeLayout 中,可能表单没有被重绘
  • 也不应该是Controls.Remove吗?
  • @V4Vendetta:是的,抱歉,已修复。
  • @CodyGray:我的意思是下次我递归循环遍历表单上的控件时,在循环中找到了它。表格上看不到,我看不到。

标签: c# winforms controls


【解决方案1】:

显然,控件将表单作为其父级,而不是面板。这类事故往往很容易发生在设计师身上。您可以使用 View + Other Windows + Document Layout 来更好地了解父子关系。您可以在此列表中使用拖放来修复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    相关资源
    最近更新 更多