关于flowLayoutPanel面板删除控件的问题,内存一直在涨没有释放
这段小程序的意思是,查找指定文件夹下的所有图片,并且动态的显示出来,于是用了FlowLayoutPanel存放动态生成的PictureBox控件。问题在于,不是一次完成任务就没有了。比如说,有时候只显示5个,或者10个,或者100个图片,也就是说动态生成PictureBox控件的个数是变化的。
程序完成之后发现点击button运行这个程序的时候,内存很快就爆满了,于是程序就挂掉了。在任务管理器中查看,每点一次,内存就往上涨。
另外,我在每次运行之前都使用clear()方法清空了面板内的控件,但是没有作用,不知道到底是哪儿占用了内存没有释放掉??
程序代码:
private void button4_Click(object sender, EventArgs e) { int N = int.Parse(comboBox_NUM.Text); //获取要展示的图片数量; flowLayoutPanel1.Controls.Clear();//清空flowLayoutPanel面板内的所有控件; ArrayList JpgList = new ArrayList();//链表存放图片全名; PictureBox[] box = new PictureBox[1000];//生成1000个图片控件 DirectoryInfo dir = new DirectoryInfo("c:\\pic"); int i = 1; foreach (FileInfo file in dir.GetFiles("*.jpg")) //得到所有图片全名存入list; { JpgList.Add(file.FullName); } foreach (string value in JpgList) { if (i <= N) { box[i] = new PictureBox(); box[i].Size = new System.Drawing.Size(105, 105);//图片框的大小; box[i].Location = new System.Drawing.Point(0, 12 + i * 100);//图片排放位置; box[i].Image = Image.FromFile(value);//图片地址; box[i].Tag = i; flowLayoutPanel1.Controls.Add(box[i]); //flowLayoutPanel增加图片 i++; } } }