C# 在c中使用变量执行相同类型的工作#
在我的程序中有一段代码:C# 在c中使用变量执行相同类型的工作#,c#,picturebox,C#,Picturebox,在我的程序中有一段代码: bigbg1.Image = null; bigbg2.Image = null; bigbg3.Image = null; bigbg4.Image = null; bigbg5.Image = null; bigbg6.Image = null; bigbg7.Image = null; bigbg8.Image = null;
bigbg1.Image = null;
bigbg2.Image = null;
bigbg3.Image = null;
bigbg4.Image = null;
bigbg5.Image = null;
bigbg6.Image = null;
bigbg7.Image = null;
bigbg8.Image = null;
bigbg9.Image = null;
其中,
bigbg
1-9是PictureBox
类型的变量。如何缩短此代码?我想使用类似于“for
”的函数,但我不知道如何操作。如果您使用的是winforms,您只需在picturebox控件上迭代即可:
foreach(var pictureBox in this.Controls.OfType<PictureBox>())
pictureBox.Image = null;
foreach(this.Controls.OfType()中的var pictureBox)
pictureBox.Image=null;
您可以将数组
和用于
:
pictureBox [] _pictureBox = this.Controls.OfType<PictureBox>();
for(int i=0; i<_pictureBox.lenght;i++)
{
_pictureBox[i] =null;
}
pictureBox[]\u pictureBox=this.Controls.OfType();
对于(inti=0;i类似于其他帖子,创建一个数组并使用linqforeach方法
List<PictureBox> pbs = new List<PictureBox>();
pbs.AddRange(new [] { bigbg1, bigbg2, bigbg3, bigbg4, bigbg5, bigbg6, bigbg7, bigbg8, bigbg9 });
pbs.ForEach(p => p.Image = null);
List pbs=new List();
AddRange(新[]{bigbg1,bigbg2,bigbg3,bigbg4,bigbg5,bigbg6,bigbg7,bigbg8,bigbg9});
pbs.ForEach(p=>p.Image=null);
更新:
下面是一个简洁、紧凑的语法,它利用了公认的答案及其注释:
this.Controls.OfType<PictureBox>()
.Where(p => p.Name.StartsWith("bigbg")).ToList()
.ForEach(p => p.Image == null);
this.Controls.OfType()
.Where(p=>p.Name.StartsWith(“bigbg”).ToList()
.ForEach(p=>p.Image==null);
基本上是创建一个数组或集合变量……如果没有关于bigbg*的更多信息,就很难给出更多细节。
你是说'for'(int i=1;iPerhaps带有。Where
以在名称开头过滤?如果您想要所有图片框,此代码非常完美。@BradleyDotNET我认为此解决方案以及。Where
非常适合我的程序。非常感谢!