创建现有按钮的列表

时间:2015-05-14 13:27:25

标签: c# arrays button

我的表格(0到9)上有10个按钮来模拟计算器     我的所有按钮的名称都是btnCalc0btnCalc1btnCalc2等等。

我想创建一个数组或这些按钮列表来处理事件但由于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);
}

4 个答案:

答案 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();