我正在尝试在运行时创建按钮。我的问题是我应该如何在运行时模式下为每个按钮添加一个事件?
例如:
Button btn;
int i =0;
int j =0;
List<Button> listBTN = new List<Button>();
private void button1_Click(object sender, EventArgs e)
{
btn = new Button();
btn.Location = new Point(60 + i, 90);
btn.Size = new Size(50, 50);
btn.Name = "BTN";
listBTN.Add(btn);
i = i + 50;
foreach(Button b in listBTN){
this.Controls.AddRange(new Button[] {b});
}
}
答案 0 :(得分:4)
btn.Click += yourMethod;
private void yourMethod(object sender, EventArgs e)
{
// your implementation
Button btn = sender as Button;
if (btn != null)
{
//use btn
}
}
如果要在声明按钮使用时添加事件:
btn.Click += delegate
{
//your implementation
};
答案 1 :(得分:1)
您可以这样做:
Button btn = new Button();
btn.Name = "BTN" + i.ToString(); //just to be sure you can distinguish between them
btn.Click += new EventHandler(btn_Click);
并为所有按钮添加默认处理程序:
void btn_Click(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
MessageBox.Show("You have clicked button number " + btn.Name);
}