我有100个10x10平方的按钮,点击时会改变颜色。
private void alternateColor(Control ctrl)
{
switch (ctrl.BackColor.Name)
{
case "LightGray":
ctrl.BackColor = Color.LightBlue;
break;
default:
ctrl.BackColor = Color.LightGray;
break;
}
}
private void matrixButtonClick(object sender, MouseEventArgs e)
{
alternateColor(sender as Control);
}
我想要一个按钮,将每个已经变为浅蓝色的按钮重置为浅灰色。任何帮助将不胜感激
private void btnClear_Click(object sender, EventArgs e)
{
????
}
答案 0 :(得分:0)
我可以想到几种方法:
列表按难度排序,但后面的列表给你更好的设计,根据你的问题,我建议至少2个
PS:我不能给你一些有意义的代码,如果我不知道你在那里做了什么 - 如果我能看到更多你的代码/定义,我会添加一些。
答案 1 :(得分:0)
您可以使用linq过滤具有特定背景颜色的按钮。您可以使用Enumerable.OfType获取按钮类型的控件,并使用Enumerable.Where方法过滤BackColor名称等于LightBlue的按钮
//Get the button in form with LightBlue back color.
var formLightBlueButton = form1.Controls.OfType<Button>()
.Where(b=>b.BackColor == Color.LightBlue);
//Changing the color of buttons
foreach(var button in formLightBlueButton)
button.BackColor = Color.LightGray;
编辑 使用foreach循环来获取和设置按钮属性,而不是使用LINQ似乎更合适。只需使用is
运算符来过滤按钮并更改背景颜色。
foreach(Control ctrl in this.Controls)
if (ctrl is Button && ctrl.BackColor == Color.Maroon)
ctrl.BackColor = Color.LightGray;