日期:2014-05-18  浏览次数:20836 次

C# 控件释放问题
我动态的向panel1 控件内添加了几个 PicturesBox 控件
现在想将其全部释放、以下是我写的代码、但是实现不了
运行后、没什么反应啊、为什么。。?
foreach (PictureBox allPic in panel1.Controls)
{
  allPic.Dispose();
}

------解决方案--------------------

C# code

//try this
foreach (Control control in panel1.Controls)
            {
                if (control is PictureBox)
                {
                    control.Dispose();
                }
            }

------解决方案--------------------
foreach (Control var in panel1.Controls)
{
Control c = var as Button;
c.Dispose();
}
但不知道为什么不能一次性释放
------解决方案--------------------
刚才那个办法不行,因为panel.controls集合发生了改变。
可以先将lable提取到一个集合内,再在该集合内删除.代码如:
ArrayList arr = new ArrayList();
foreach (Control var in this.panel1.Controls)
if (var is button)
arr.Add(var);

for (int i = 0; i < arr.Count; i++)
{
panel1.Controls.Remove(((Control)arr[i]));
((Control)arr[i]).Dispose();
}
这样可以一次性全部删除了
------解决方案--------------------
你的应该用的不是释放吧,你应该把它从控件中移除,用remove方法