2015-05-14 44 views
0

欧莱雅已经在我的形式(0〜9)1-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); 
} 
+1

这是WinForms还是WPF,还是别的? –

回答

1

你可以用循环来填充你的数组(参见ASh的答案)。但是,这样做会使代码难以阅读。良好的代码的主要测试是可读的代码,所以避免“聪明”的解决方案,并保持简单。在这种情况下,一个简单,易于阅读和维护,方法是:

List<Button> lstBtnCalc = new List<Button> 
{ 
    btnCalc0, btnCalc1, btnCalc2, btnCalc3, btnCalc4, 
    btnCalc5, btnCalc6, btnCalc7, btnCalc8, btnCalc9 
} 
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); 
    } 
} 
+0

downvote的原因是什么? –

0

试试这个

public partial class Form1 : Form 
    { 
     List<Button> lstBtnCalc = null; 
     public Form1() 
     { 
      InitializeComponent(); 

      lstBtnCalc = new List<Button>() { button1, button2, button3, button4 }; 


     } 
    } 
-1

有点流利:

List<Button> lstBtnCalc = this.Controls.OfType<Button>().Where(a => a.Name.StartsWith("btnCacl")).ToList();