C# 为单个事件处理程序动态生成按钮

标签 c# winforms

我需要为多个按钮使用单个事件处理程序。我根据数据库查询通过 while 循环生成了这些按钮。我创建了一个方法

void MyButtonClick(object sender, EventArgs e)
{ 
}

我是 C# 新手。如何将所有按钮的事件绑定(bind)到单个处理程序。

生成按钮的代码:

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);
        }
    }
}

最佳答案

欢迎来到 SO。您可以在 this.Controls.Add(btn);

之前添加它
btn.Click += MyButtonClick;

关于C# 为单个事件处理程序动态生成按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40955868/

相关文章:

C# 在 Control 的生命周期中 Site (ISite) 不为空?

c# - 来自 .Net 图表的意外行为

c# - 如何将 Umbraco CMS 从使用 SQL Server CE 升级到 SQL Server 的升级版本?

c# - Windows 8中的摄像头检测

c# - 在 WebBrowser 控件中查看 Docx 文档

c# - 如何从用户控件中的主窗体读取属性

c# - 使用百分号在 DataTable 中添加计算列的表达式

c# - 重用 MQMessage 对象

c# - 等效于 SQL 语句的 LINQ 语句

c# - 如何在单独的程序集中获取用户 ID