问题在于,不是一次完成任务就没有了。比如说,有时候只显示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++;
}
}
}
{
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++;
}
}
}