我需要为多个按钮使用单个事件处理程序。我根据数据库查询通过while循环生成了这些按钮。我创建了一个方法
void MyButtonClick(object sender, EventArgs e)
{
}
我是C#的新手。如何将所有按钮的事件绑定到单个处理程序。
生成按钮的代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
MydbConnection db = new MydbConnection();
MySqlConnection con = db.connection();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "select * from categories where online = 1";
cmd.Connection = con;
MySqlDataReader rd;
con.Open();
rd = cmd.ExecuteReader();
int i = 1;
while (rd.Read())
{
Button btn = new Button();
btn.Name = "btn-" + i.ToString();
btn.Tag = i;
btn.Text = rd.GetString(2).ToString();
btn.Height = 60;
btn.Width = 100;
btn.Location = new Point(900, 60 * i + 10);
this.Controls.Add(btn);
i++;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
答案 0 :(得分:1)
欢迎来到SO。您可以在this.Controls.Add(btn);
btn.Click += MyButtonClick;
答案 1 :(得分:0)
您需要将所有CLICK属性设置为相同的事件处理程序:
btn.Click += new EventHandler(MyButtonClick);
这应该使得只要你点击任何按钮,MyButtonClick()就是触发的事件。当然,如果您需要确定单击WHICH按钮,那么您需要检查事件中的sender
参数,其中'i'是您为循环中的按钮分配的数字值之一:< / p>
(if sender == btn-i) then ....