急求!窗体中某种类型控件的集合

ELement_DG 2010-02-01 05:56:14
我在窗体中有50个PictureBox控件,给他们的Image赋值不想用类似 this.pictureBox1.Image = .......;
能不能用遍历循环这种方法给PictureBox集合中的控件逐个赋值?


...全文
120 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cosmo_sei 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 element_dg 的回复:]
我想问一下,这种遍历赋值的方法,如果窗体中有50个PictureBox控件,可以这样赋值吗? 会不会产生类似什么
outofMemoryException之类的问题?

我之前就出现了这样的问题,不断的产生内存不足的警示,然后整个工程就用不成了
[/Quote]

每个控件都是一个object,这里遍历得到的都只是object的引用(存在堆栈上,控件对象的数据是存在堆上的)。
如果你一个一个的赋值不会出现内存不够,那么遍历赋值也不回。
ELement_DG 2010-02-01
  • 打赏
  • 举报
回复
我想问一下,这种遍历赋值的方法,如果窗体中有50个PictureBox控件,可以这样赋值吗? 会不会产生类似什么
outofMemoryException之类的问题?

我之前就出现了这样的问题,不断的产生内存不足的警示,然后整个工程就用不成了
cosmo_sei 2010-02-01
  • 打赏
  • 举报
回复
比如你有100个picturebox,只想对其中50个循环复制,也可以定义一个控件数组
PictureBox[] picboxes = {this.pictureBox1,this.pictureBox2,this.pictureBox3,.....}
然后循环或迭代控件数组
JavaK 2010-02-01
  • 打赏
  • 举报
回复
foreach(Control c in cs)
{
if(c is PictureBox)
{

((PictureBox)c).Image = .....;

}
}
lzsh0622 2010-02-01
  • 打赏
  • 举报
回复

for (int i = 1; i <= 50; i++)
{
(this.Controls["pictureBox" + i] as PictureBox).Image = ..... ;
}
ELement_DG 2010-02-01
  • 打赏
  • 举报
回复
Constrols cs = new Constrols();

foreach(Control c in cs)
{
if(c is PictureBox)
{
接下来如何给Image赋值?
难道是:

c.Image = .....;

我就在这里产生问题了
}
}
hhc123 2010-02-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lcl_data 的回复:]
可以
遍历控件
Foreach(control c in COntrols)
{
  if(c is PictureBox)
{
...
}
}
[/Quote]
就是这样子啊
十八道胡同 2010-02-01
  • 打赏
  • 举报
回复
可以
遍历控件
Foreach(control c in COntrols)
{
if(c is PictureBox)
{
...
}
}

111,122

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧