c# - 如何为动态创建的按钮(每个按钮)创建 EventHandler C# VS2010

标签 c# jquery button event-handling

所以,我有一个表单,其中所有按钮、文本框和标签都是动态生成的

代码:

private void LoadElements()
            {
                int Y = 30;
                int j = 0;
                con.Open();
                OleDbCommand populate = new OleDbCommand("SELECT * FROM Users", con);
                OleDbDataReader reader = populate.ExecuteReader();
                while (reader.Read())
                {
                    b = new Button();
                    b.Text = "Delete";
                    b.Name = reader["Username"].ToString();
                    b.BackColor = Color.DarkOrange;
                    b.ForeColor = Color.Black;
                    b.Location = new Point(240, Y);
                    b.FlatStyle = FlatStyle.Flat;
                    LB.Add(b);
                    tb1 = new TextBox();
                    tb1.Location = new Point(10, Y);
                    TB1.Add(tb1);
                    tb1.Text = reader["Username"].ToString();
                    tb2 = new TextBox();
                    tb2.Location = new Point(120, Y);
                    tb2.Text = reader["Password"].ToString();
                    TB2.Add(tb2);
                    Y += 30;
                    j++;
                }

                foreach (Button BTN in LB) // <- this is a globaly declared List<Button>
                {
                    this.Controls.Add(BTN);
                    BTN.Click += new EventHandler(BTN_Click);
                }
                foreach (TextBox text1 in TB1)  // <= -||- List<TextBox>
                { this.Controls.Add(text1); }
                foreach (TextBox text2 in TB2)  // -||-
                { this.Controls.Add(text2); }

              // MORE CODE UNDER
      }

您可能已经注意到,也可能没有注意到,整个表单是一种“ super 管理员”类型的表单,所有用户和密码都从数据库加载到它上面。我希望能够引用创建的按钮,当单击删除按钮时我希望程序进入数据库并搜索“WHERE [Username] LIKE”+ button.Name +“”(因为按钮名称是实际的用户名);我的代码像这样动态创建元素:[名称] [密码] [删除] [文本框 1] [文本框 2] [按钮] 的形式。问题是每当我单击任何按钮时,它只引用最后创建的按钮,我怎样才能创建事件处理程序以便它可以看到每个按钮各自的 .name?

最佳答案

关键代码在事件处理过程中——你没有显示。查看对象发送者参数,并相应地使用它!

void BTN_Click(object sender, EventArgs e)
{
    Button b = sender as Button;
    if (b!=null)
    {
        //that's your button, with the properties created in the loop.
    }
}

关于c# - 如何为动态创建的按钮(每个按钮)创建 EventHandler C# VS2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939334/

相关文章:

c# - 根据通用类型参数查询不同的列

c# - 在 C# 中使用和解析文本文件来初始化基于组件的游戏模型

c# - 如何使用 Linq 返回一个包含列表中所有对象总和的对象?

c# - Azure 语音转文本模型运行但返回错误的输出

WPF:如果将按钮放在工具栏中,按钮助记符不起作用

jquery find() 可以结合 id 和 html 元素吗?

javascript - JQuery onmouseover 只影响一个组件

javascript - 我如何使用 jQuery 同时选择 'this' 和其他内容?

javascript - 单击按钮时通过 socket.io 触发函数

java - 如何将按钮添加到一列 TableView 中的单行?