C# 通过按另一个按钮对一些按钮进行分组以交替其背景色
好的,我有一个正方形的100个按钮。以及外部的其他功能按钮(退出/清除/填充按钮等)。 “清除”按钮会将表单底色上的所有按钮变为浅灰色,而“填充”按钮会将表单底色上的所有按钮变为浅蓝色C# 通过按另一个按钮对一些按钮进行分组以交替其背景色,c#,winforms,C#,Winforms,好的,我有一个正方形的100个按钮。以及外部的其他功能按钮(退出/清除/填充按钮等)。 “清除”按钮会将表单底色上的所有按钮变为浅灰色,而“填充”按钮会将表单底色上的所有按钮变为浅蓝色 private void btnClear_Click(object sender, EventArgs e) { foreach (Control ctrl in this.Controls) if (ctrl is Button &&am
private void btnClear_Click(object sender, EventArgs e)
{
foreach (Control ctrl in this.Controls)
if (ctrl is Button && ctrl.BackColor == Color.LightBlue)
ctrl.BackColor = Color.LightGray;
}
private void btnFill_Click(object sender, EventArgs e)
{
foreach (Control ctrl in this.Controls)
if (ctrl is Button && ctrl.BackColor == Color.LightGray)
ctrl.BackColor = Color.LightBlue;
}
我希望使“清除”和“填充”按钮只对正方形中的100个按钮有效,而不是其他按钮。我可以使用面板/分组框吗?或者制作一组按钮?只参考那些按钮?我显然是新手,所以任何建议,尤其是代码都会非常有用:)是的,您可以使用面板或分组框
例如,您可以将按钮放入一个面板中,然后您可以修改代码以引用
panel1。控件
而不是此控件。控件
因为它们已经在一个大正方形中,所以应该很容易按照您的建议将它们全部移动到面板中,然后仅更改面板内的控件,而不是整个窗体
您可以删除ctrl is按钮
复选框,因为面板中唯一的控件是按钮
此外,在更改按钮之前,您不需要检查按钮的当前背景色,除非您试图避免运行的BackColorChanged
事件中发生了某些事情
private void btnClear_Click(object sender, EventArgs e)
{
foreach (var ctrl in pnlButtons)
ctrl.BackColor = Color.LightGray;
}
private void btnFill_Click(object sender, EventArgs e)
{
foreach (Control ctrl in pnlButtons)
ctrl.BackColor = Color.LightBlue;
}
或者,您可以将要更改的按钮存储在列表中。如果您已经在运行时生成了按钮,那么这应该很容易
var myButtons = new List<Button>();
myButtons.Add(someButton); // add buttons
foreach(var btn in myButtons)
btn.BackColor = Color.LightBlue;
var myButtons=newlist();
myButtons.Add(someButton);//添加按钮
foreach(我的按钮中的var btn)
btn.BackColor=Color.LightBlue;