如何将类似命令的数量减少到循环中?
像
这样的东西pictureBox7.BackColor = Color.FromArgb(187, 187, 187); pictureBox9.BackColor = Color.FromArgb(187, 187, 187); pictureBox10.BackColor = Color.FromArgb(187, 187, 187); pictureBox11.BackColor = Color.FromArgb(187, 187, 187); pictureBox12.BackColor = Color.FromArgb(187, 187, 187); pictureBox13.BackColor = Color.FromArgb(187, 187, 187);
答案 0 :(得分:3)
var pics = new PictureBox[] {pictureBox7,
pictureBox8,
pictureBox9,
pictureBox10, etc... };,
pics.ToList().ForEach(p => p.BackColor = Color.FromArgb(187, 187, 187));
答案 1 :(得分:3)
正如其他答案所暗示的那样,您需要将要执行相同操作的控件收集到某种List
中,然后您可以循环它以将所有控件设置为相同的值。执行此操作的一种好方法是使用一种方法将控件添加到私有列表,然后使用另一种方法将任何操作应用于列表中的每个控件。这使您可以在以后轻松添加更多内容,而无需深入挖掘代码或进行过多的copy-n-paste编码。
执行此操作后,您可以停止命名控件Control##
,并开始为其提供实际的描述性名称,以确定其用途。在一个正在工作的项目中自动命名控件是一个糟糕的想法,因为稍后你会试图记住pictureBox28
实际上是为了什么,而在pictureBoxPreview
有一个稍微明显的原因存在。
答案 2 :(得分:2)
Color color = Color.FromArgb(187, 187, 187);
foreach (Control ctrl in this.Controls)
{
if (ctrl is PictureBox) // don't get me started on is vs. as
{
PictureBox pb = (PictureBox)ctrl;
pb.BackColor = color;
}
}
答案 3 :(得分:1)
PictureBox[] pbs = new PictureBox[]{ pictureBox1, pictureBox2, ...};
for(int i = 0; i < pbs.Length; i++) pbs[i].BackColor = Color.FromARGB(187,187,187)
答案 4 :(得分:1)
您可以执行以下操作。注意,语法可能不完美,但你明白了。
foreach(var pb in new PictureBox[] {pictureBox7, pictureBox9, pictureBox10, pictureBox11, pictureBox12, pictureBox13})
pb.BackColor = Color.FromArgb(187, 187, 187);