有没有人看到这个有什么问题:
this.Controls.Remove(this);
this
是一个扩展用户控制的类。当我逐步完成这部分代码时,看起来一切都很好,但是表单没有任何反应。我希望控制能够消失。
答案 0 :(得分:10)
如上所述,你正在从自身中移除控制......这可能不是你想要的。我假设你想从它的父中删除控件 - 所以你可能想要this.Parent.Controls.Remove(this);
。
答案 1 :(得分:4)
没有任何事情发生,因为它在'this'
的控件集合中找不到'this'如果您的范围在Control本身内,您可能希望
this.Container.Controls.Remove(this);
但这一切都取决于什么类型的控制和什么类型的容器。但上述情况应该适用于大多数情况。
修改强>
如果您知道您的控件属于某个表单,您可以执行以下操作,或将Form替换为已知的容器类型(即面板)
((Form)this.Container).Controls.Remove(this);
答案 2 :(得分:4)
其他回答是正确的,指出您没有使用正确的集合。
但是,我会指出一个从页面中删除自己的控件并不是我认为来自任何asp.net控件的“预期行为”。覆盖Render
方法(或将Visible
属性设置为false
)会产生相同的结果,并且很少有机会混淆将来维护该代码的人。
答案 3 :(得分:1)
this.Controls是您的usercontrol中存在的Controls集合。 “这个”不会存在于该集合中,因为“this”是父级。
我想你想找到表单对象,然后执行myForm.Controls.Remove(this)。