我换了:
panel.Controls.Clear();
使用:
Clear(panel);
其中:
public static void Clear(Control ctrl)
{
while (ctrl.Controls.Count > 0) ctrl.Controls[0].Dispose();
}
我收到以下错误:Application.Run(new Form1());
System.ObjectDisposedException未处理
无法访问已处置的对象。
对象名称:'标签'。
知道为什么会这样吗?
感谢。
编辑:对不起,我可能正在处理我想从其父级中删除的内容。我会检查一下。谢谢你的回答。答案 0 :(得分:3)
Dispose()
没有与内存有关。它不释放内存,它不会从集合中删除对象,也不会调用垃圾收集器。相反,.Dispose()
的目的是清理非内存资源:数据库连接,套接字,设备句柄,gdi句柄等。
这可以帮助您修复内存问题的唯一方法是,如果您使用的是自定义控件,每个控件都依赖于非托管(非.Net)dll中的代码。
答案 1 :(得分:0)
您需要移除您处置的控件,但可能有更好的方法:
public static void Clear(Control ctrl)
{
foreach(Control c in ctrl.Controls) c.Dispose();
ctrl.Controls.Clear();
}
答案 2 :(得分:0)
我可能会稍后在代码中处理一些Control
我 。