我有多个6个按钮,当您点击每个按钮时,它们将更改其属性,并停用其他相同标签中的其他属性。
我目前使用的代码不使用标签,并且每次按下按钮都会非常长时间地使用这些代码:
private void buttonBritishGas_Click(object sender, EventArgs e)
{
buttonBritishGas.FlatStyle = FlatStyle.Flat;
buttonBritishGas.FlatAppearance.BorderSize = 3;
buttonBritishGas.FlatAppearance.BorderColor = Color.Blue;
buttonEDF.FlatStyle = FlatStyle.Standard;
buttonEDF.FlatAppearance.BorderSize = 1;
buttonEDF.FlatAppearance.BorderColor = Color.White;
buttonEON.FlatStyle = FlatStyle.Standard;
buttonEON.FlatAppearance.BorderSize = 1;
buttonEON.FlatAppearance.BorderColor = Color.White;
buttonNPower.FlatStyle = FlatStyle.Standard;
buttonNPower.FlatAppearance.BorderSize = 1;
buttonNPower.FlatAppearance.BorderColor = Color.White;
buttonScottishPower.FlatStyle = FlatStyle.Standard;
buttonScottishPower.FlatAppearance.BorderSize = 1;
buttonScottishPower.FlatAppearance.BorderColor = Color.White;
buttonSSE.FlatStyle = FlatStyle.Standard;
buttonSSE.FlatAppearance.BorderSize = 1;
buttonSSE.FlatAppearance.BorderColor = Color.White;
我使用的标签是“供应商”,这是我目前尝试的代码:
private void buttonBritishGas_Click(object sender, EventArgs e)
{
buttonBritishGas.Tag = "SelectedSupplier";
foreach (Control c in Controls)
{
if (c.Tag.Equals("SelectedSupplier"))
{
FlatStyle = FlatStyle.Flat;
FlatAppearance etc...;
}
}
foreach (Control c in Controls)
{
if (c.Tag.Equals("Supplier"))
{
FlatStyle = FlatStyle.Standard;
FlatAppearance etc...;
}
}
感谢任何帮助!
编辑:
private void ChangeStyleByTag(Control parent, string tag, object sender, EventArgs e)
{
foreach (Control c in parent.Controls)
{
if (c.Tag != null && c.Tag.Equals(tag))
{
Button b = (Button)sender;
b.FlatStyle = FlatStyle.Flat;
b.FlatAppearance.BorderSize = 3;
b.FlatAppearance.BorderColor = Color.Blue;
}
else
ChangeStyleByTag(c, tag);
}
}
private void buttonBritishGas_Click(object sender, EventArgs e)
{
buttonBritishGas.Tag = "SelectedSupplier";
ChangeStyleByTag(this."SelectedSupplier");
ChangeStyleByTag(this."Supplier");
}
答案 0 :(得分:0)
你必须在表单的控制树中递归循环:
private void ChangeStyleByTag(Control parent, string tag)
{
foreach (Control c in parent.Controls)
{
if (c.Tag!=null && c.Tag.Equals(tag))
{
(c as Button).FlatStyle = FlatStyle.Flat;
(c as Button).FlatAppearance.BorderSize = 3;
(c as Button).FlatAppearance.BorderColor = Color.Blue;
}
else
ChangeStyleByTag(c, tag);
}
}
private void buttonBritishGas_Click(object sender, EventArgs e)
{
ChangeStyleByTag(this, "SelectedSupplier");
ChangeStyleByTag(this, "Supplier");
}