好的,我有一个正方形的100个按钮。以及其他功能按钮(退出/清除/填充按钮等)。 清除按钮会将表单上的所有按钮变为浅灰色,填充按钮会将表单上的所有按钮变为背景颜色。
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个按钮而不是其他按钮。我可以使用面板/组合框吗?或制作按钮集合?某种程度上只参考那些按钮?我显然很新,所以任何建议,尤其是代码都会非常有用:)
答案 0 :(得分:1)
由于他们已经在一个大的广场上,所以应该很容易将它们全部移动到您建议的Panel中,然后只更改Panel内的控件而不是整个Form。
您可以删除ctrl is Button
支票,因为面板中的唯一控件是按钮。
此外,在更改按钮之前,您不需要检查按钮的当前BackColor,除非您在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;
答案 1 :(得分:0)
是的,您可以使用面板或组框。
例如,您可以将按钮放入面板,然后您可以修改代码以引用panel1.Controls
而不是this.Controls
。