【发布时间】:2012-01-10 05:53:11
【问题描述】:
我有一个例程,在该例程中递归遍历表单上的所有控件并处理其中一些控件上的一些代码。
我根据用户所做的选择使用屏幕添加和删除控件。
我发现panel.Controls.Remove(control1) 实际上并没有从表单中删除它。当我运行递归循环遍历表单上的控件的例程时,我认为我已经删除的控件仍然被发现。
直到我做到了,它才“消失”:
panel.Controls.Remove(control1);
this.Controls.Remove(control1)
这是预期的吗?有人可以向我解释一下吗,或者指出我在某个地方可以解释 Windows 窗体中的控制行为。
谢谢!
【问题讨论】:
-
很确定这是不是预期的行为。当您说它“仍在被发现”时,您的意思是您仍然可以在屏幕上看到它吗?您确定在您调用
Remove方法后表单已被重绘(重绘)吗? -
您是否尝试将它们包含在
SuspendLayout和ResumeLayout中,可能表单没有被重绘 -
也不应该是
Controls.Remove吗? -
@V4Vendetta:是的,抱歉,已修复。
-
@CodyGray:我的意思是下次我递归循环遍历表单上的控件时,在循环中找到了它。表格上看不到,我看不到。