我有以下方法:
for (int i = 0; i < 10; i++)
{
if (button[i].BackColor == Color.GreenYellow) // if button colour is GreenYellow
{
button[i].BackColor = Color.Beige; // change to beige
break;
}
else if (button[i].BackColor == Color.Beige) // if button is already beige
{
button[i + 1].BackColor = Color.Beige; //skip current button and change next button to beige
break;
}
}
该方法有效,但不是我打算工作的方式。在代码的else if
部分,我想要的是,如果按钮颜色已经是Beige
,则跳过下一个按钮中的当前按钮和颜色。
问题是它只适用于前2个按钮,然后对接下来的8个按钮无效。任何人都可以解决这个问题吗?
答案 0 :(得分:1)
试试这个。
int i = 0;
while (i < 10)
{
if (button[i].BackColor == Color.GreenYellow) // if button colour is GreenYellow
{
button[i].BackColor = Color.Beige; // change to beige
i++;
}
else if (button[i].BackColor == Color.Beige) // if button is already beige
{
button[i + 1].BackColor = Color.Beige; //skip current button and change next button to beige
i+=2;
}
}
答案 1 :(得分:0)
删除Break
for (int i = 0; i < 10; i++)
{
if (button[i].BackColor == Color.GreenYellow) // if button colour is GreenYellow
{
button[i].BackColor = Color.Beige; // change to beige
}
else if (button[i].BackColor == Color.Beige) // if button is already beige
{
button[i + 1].BackColor = Color.Beige; //skip current button and change next button to beige
i += 1;
}
}
答案 2 :(得分:0)
不确定您的问题是否希望所有按钮都以这种方式运行,或者仅仅是1到10之间的数组。如果是前者,您可以使用:
var buttons = this.Controls.Cast<Control>()
.Where(b => b.GetType() == typeof(Button) && b.BackColor != Color.Beige)
.ToList();
buttons.ForEach(b => b.BackColor = Color.Beige);
否则,你会想要坚持彼得发布的方法。