处理面板上的控件 [英] disposing controls on panel
问题描述
你好......
i想要从面板中删除所有控件...
i使用这个:
foreach(在面板中控制c。控制)
panel.Controls.Remove(c);
但是它不起作用......
- 并非所有控件都被删除...
thanx
hello...
i want to renove all controls from panel...
i use this:
foreach (Control c in panel.Controls)
panel.Controls.Remove(c);
but it''s doesn''t work...
-- not all controls are removed...
thanx
推荐答案
David,
它应该删除它们。你能举例说明他们不在哪里取消了吗?
它对我有用。我使用RemoveAt和for循环,而不是foreach,
因为你在枚举时不能修改它。
另外,你可能没有看到异常,因为你在按钮的
事件处理程序中执行此操作,并且异常被吞下。这样做
代替:
//删除所有控件。
for(int index = panel.Controls.Count - 1 ; index> = 0; index--)
//删除控件。
panel.Controls.RemoveAt(index);
希望这会有所帮助。
-
- Nicholas Paldino [.NET / C#MVP]
- mv*@spam.guard.caspershouse.com
" David" <哒******* @ hotmail.com>在消息中写道
news:u
David,
It should remove them. Can you show an example of where they are not
removed?
It works for me. I use RemoveAt and a for loop, and not a foreach,
because you can''t modify the collection while enumerating through it.
Also, you probably don''t see an exception because you do this in an
event handler for a button, and the exception gets swallowed. Do this
instead:
// Remove all controls.
for (int index = panel.Controls.Count - 1; index >= 0; index--)
// Remove the controls.
panel.Controls.RemoveAt(index);
Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com
"David" <da*******@hotmail.com> wrote in message
news:u
************** @ TK2MSFTNGP11.phx.gbl ...
**************@TK2MSFTNGP11.phx.gbl...
你好...
我想从面板中删除所有控件......
我用这个:
foreach(控制c在panel.Controls中)
panel.Controls.Remove(c);
但是它不起作用......
- 并非所有控件都被移除......
thanx
hello...
i want to renove all controls from panel...
i use this:
foreach (Control c in panel.Controls)
panel.Controls.Remove(c);
but it''s doesn''t work...
-- not all controls are removed...
thanx
David< da ******* @ hotmail.com>写道:
David <da*******@hotmail.com> wrote:
我想从面板中删除所有控件...
我用这个:
foreach(控制c在panel.Controls中)
panel.Controls.Remove(c);
但它不起作用......
- 并非所有控件都被移除......
i want to renove all controls from panel...
i use this:
foreach (Control c in panel.Controls)
panel.Controls.Remove(c);
but it''s doesn''t work...
-- not all controls are removed...
我怀疑问题是你正在迭代一个集合并且在迭代期间改变它是
。那不是个好主意。试试这个
代替:
ArrayList list = new ArrayList(panel.Controls);
foreach(列表中的控制c)
{
panel.Controls.Remove(c);
}
-
Jon Skeet - < sk *** @ pobox.com>
http://www.pobox.com/~skeet
如果回复小组,请不要给我发邮件
I suspect the problem is that you''re iterating through a collection and
changing it during the iteration. That''s not a good idea. Try this
instead:
ArrayList list = new ArrayList (panel.Controls);
foreach (Control c in list)
{
panel.Controls.Remove(c);
}
--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too
这篇关于处理面板上的控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!