循环创建控件,如何释放控件内存
现在的问题是:每执行一次下面的代码,内存就增加,如何释放控件内存。
有一个Timer,定时执行下面的代码。
代码如下:
int row = 1;
int columnNum = 5;
int width = 217;
int height = 266;
int left = 20;
int top = 16;
for (int z = 0; z < groupPanel5.Controls.Count; z++)
{
Control c = groupPanel5.Controls[z];
foreach (Control cc in c.Controls)
cc.Dispose();
groupPanel5.Controls.RemoveAt(z);
c.Dispose();
}
groupPanel5.Controls.Clear();
GC.Collect();
foreach (ServersInfo sv in servs)
{
DevComponents.DotNetBar.PanelEx pe = new DevComponents.DotNetBar.PanelEx();
DevComponents.DotNetBar.Controls.ReflectionImage refimage = new DevComponents.DotNetBar.Controls.ReflectionImage();
refimage.Location = new System.Drawing.Point(0, 0);
refimage.Name = "refimage" + sv.ID.ToString();
refimage.Size = new System.Drawing.Size(217, 125); refimage.Tag = pe;
pe.Name = "panelEx_Server" + sv.ID.ToString();
pe.Tag = sv;
pe.Size = new Size(width, height);
if (i % columnNum == 0)
{
if (i != 0)
row++;
pe.Location = new Point(left, (row - 1) * height + top * row);
}
else
{
if (row == 1)
{
pe.Location = new Point(i * width + (i + 1) * left, top);
}
else
{
pe.Location = new Point((columnNum - (((row * columnNum) - 1) - i) - 1) * width + (columnNum - (((row * columnNum) - 1) - i)) * left, (row - 1) * height + top * row);
}
}
DevComponents.DotNetBar.Controls.ReflectionLabel reflabel_Serverinfo = new DevComponents.DotNetBar.Controls.ReflectionLabel();
reflabel_Serverinfo.Location = new System.Drawing.Point(0, 100);
reflabel_Serverinfo.Name = "reflabel" + sv.ID.ToString();
reflabel_Serverinfo.Size = new System.Drawing.Size(217, 65);
DevComponents.DotNetBar.Controls.ReflectionLabel reflabel = new DevComponents.DotNetBar.Controls.ReflectionLabel();
reflabel.Location = new System.Drawing.Point(0, 100);
reflabel.Name = "reflabel" + sv.ID.ToString();
reflabel.Size = new System.Drawing.Size(217, 63);
pe.Controls.Add(reflabel);
pe.Controls.Add(reflabel_Serverinfo);
pe.Controls.Add(refimage);
this.groupPanel5.Controls.Add(pe);
Application.DoEvents();
i++;
}
...全文
相关推荐
Delphi动态生成控件
动态生成控件,Delphi动态生成控件,QQ476196678
易语言循环创建控件源码-易语言
易语言循环创建控件源码
QT控件数组创建的一种方法
使用QTfor语句创建控件数组(button[i]),方便大量控件调用,本程序以Qpushbutton为例,语言简洁
vs2008基于vlc的播放器,动态创建所有的控件。
vs2008的VLC播放器,用C++开发,基于源码下载于CSDN,改进了: 1、内存泄漏问题; 2、界面优化; 3、所有按钮动态创建。
MFC中动态创建控件
在MFC中创建动态控件的生成与响应 一、创建动态控件 1.建立控件ID号: 2.建立控件对象: 二、动态控件的响应: 1.在MESSAGE_MAP中添加响应函数: 2.在头文件中添加函数定义: 3.编写消息响应函数: 三、回收资源: 四、实例:单选按钮组的动态生成


