我的表格(0到9)上有10个按钮来模拟计算器
我的所有按钮的名称都是btnCalc0
,btnCalc1
,btnCalc2
等等。
我想创建一个数组或这些按钮列表来处理事件但由于btnCalc
不存在(btnCalc+x)
而无法正常工作。
List<Button> lstBtnCalc = new List<Button>();
for (int x = 0; x < 10; x++)
{
lstBtnCalc.Add(btnCalc+x));
}
private void myClick(object sender, EventArgs e)
{
int index = lstBtnCalc.IndexOf(sender as Button);
}
答案 0 :(得分:3)
您可以使用循环填充数组(请参阅ASh的回答)。但是,这样做会使代码难以阅读。良好代码的主要测试是可读代码,因此避免&#34;聪明&#34;解决方案并保持简单。在这种情况下,简单,易于阅读和维护的方式是:
List<Button> lstBtnCalc = new List<Button>
{
btnCalc0, btnCalc1, btnCalc2, btnCalc3, btnCalc4,
btnCalc5, btnCalc6, btnCalc7, btnCalc8, btnCalc9
}
答案 1 :(得分:0)
您可以使用Find方法:
List<Button> lstBtnCalc = new List<Button>();
for (int x = 0; x < 10; x++)
{
var buttonName = string.Format("btnCalc{0}",x);
var button = this.Controls.Find(buttonName);
if (button != null)
{
lstBtnCalc.Add(button);
}
}
答案 2 :(得分:0)
试试这个
public partial class Form1 : Form
{
List<Button> lstBtnCalc = null;
public Form1()
{
InitializeComponent();
lstBtnCalc = new List<Button>() { button1, button2, button3, button4 };
}
}
答案 3 :(得分:-1)
有点流利:
List<Button> lstBtnCalc = this.Controls.OfType<Button>().Where(a => a.Name.StartsWith("btnCacl")).ToList();