标题:关于flowLayoutPanel面板删除控件的问题,内存一直在涨没有释放
只看楼主
study777
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-8-26
 问题点数:0 回复次数:0 
关于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++;
                }
            }
        }
搜索更多相关主题的帖子: 控件 内存 图片 box new 
2017-08-26 14:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-480300-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.053353 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved