处理面板上的控件 [英] disposing controls on panel

查看:64
本文介绍了处理面板上的控件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好......

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆