C# WinForm 动态添加-删除控件内存未释放

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WinForm 动态添加-删除控件内存未释放相关的知识,希望对你有一定的参考价值。

根据需求要在Winform的一个panel中动态的添加控件,处理完后删除(子线程中操作):
for(n)

while (panel1.Controls.Count > 0)

panel1.Invoke((Action)delegate

panel1.Controls.Remove(panel1.Controls[0]);
);

panel1中根据条件动态添加控件
……
处理
……

跟踪发现内存持续增加。难道是因为panel1.Controls.Remove(panel1.Controls[0]);没有清理干净内存?

参考技术A 你只是移除了!!没有释放啊!!
while (panel1.Controls.Count > 0)

panel1.Invoke((Action)delegate

Control C=panel1.Controls[0]);
panel1.Controls.Remove(C);
C.Dispose();
);
本回答被提问者和网友采纳
参考技术B 这个最好是看下添加控件部分的代码,主要是创建实例的部分 参考技术C remove 又不回收内存
该有引用的还是要引用到对象上

C# WPF后台动态添加控件(经典)

概述 在Winform中从后台添加控件相对比较容易,但是在WPF中,我们知道界面是通过XAML编写的,如何把后台写好的控件动态添加到前台呢?本节举例介绍这个问题。 这里要用到UniformGrid布局,UniformGrid 是一种横向的网格分割、纵向的网格分割分别是均等的分割的布局类型. ​ 项目

以上是关于C# WinForm 动态添加-删除控件内存未释放的主要内容,如果未能解决你的问题,请参考以下文章

C# winform动态添加控件获取值问题

C# WinForm 如何动态添加控件和设计控件布局

C# WinForm 自定义控件如何实现动态添加子控件

C#如何动态加载RadioButton控件

C# WinForm 如何动态添加控件和设计控件布局

c# 中如何在GroupBox控件中动态添加与移除控件