有很多方法可以做到这一点:
第一种方式(使用可视化工具箱编辑器):
您通过从 Visual Studio 工具箱中拖动添加了 25 个按钮
button1, button2 ... button25
如果它们按 ORDER 排序,您只需这样做:
int index = 1; //button1
foreach (Control c in GridOrCanvas.Children)
{
if(c is Button && index==number){ ((Button)c).background = ...; break; }
else index++;
}
另一种方式(仍在使用Visual Studio工具箱):
在程序开始时,将按钮属性“名称”分配给您想要的数字(仍然认为它们是按顺序排列的):
int ind = 1;
foreach(Control c in GridOrCanvas.Children)
{
if(c is Button) c.Name = "_" + ind++.ToString(); //_1
}
现在,您只需执行相同的操作,但比较字符串:
foreach (Control c in GridOrCanvas.Children)
{
if(c is Button && c.Name == "_" + number) { ((Button)c).background = ...; break; // "_" + 20 = "_20" }
}
另一种方法是通过数组将它们添加到代码中:
Button[] Buttons = new Button[25];
for(int i=0; i< Buttons.Length; i++)
{
GridOrCanvas.Children.Add(Buttons[i] = new Button() { Width = ..., Height = ..., Content = "...", ..., etc });
Canvas.SetTop(Buttons[i], top_location);
Canvas.SetLeft(Buttons[i], left_location);
}
你现在有按数字排序的数组... Buttons[0] is button1...
if(number > -1 && number < 26);
Buttons[number-1].Background = ...; //Faster way
如果你的按钮有这个,最后也是愚蠢的方法:
Button1.Content = "Button1";
你这样检查就行了:
foreach (Control c in GridOrCanvas.Children)
{
if(c is Button) if(((Button)c).Content == "Button" + number)
{ ((Button)c).background = ...; break; // "Button" + 20 = "Button20" }
}
通过使用标签,您只需将标签分配为名称:
//假设你已经分配了标签:
//button1.Tag = 1;
foreach(Control c in GridOrCanvas.Children)
{
if(c is Button) if((int)(((Button)c).Tag) == number) { ((Button)c).background = ...; break; }
}