如何与单击按钮一起传输变量?

时间:2019-04-24 20:53:21

标签: c# winforms

我不知道要发送的按钮的名称。
为了进一步处理数据,我需要至少传递一个id。
但是当我尝试与事件一起发送其他内容时,会出现错误。
我有Sqlite数据库

for (int i = 0; i < database.Rows.Count; i1++)
{
    Button buttonNew  = new Button();
    int id = Convert.ToInt32(row["id"]); //i get id elem of my database 
    buttonNew.Click += ButtonNewClick(id);
}
void ButtonNewClick(int id)
{
    Form2 fNext = new Form2();
    fNext.Show();
    //Other operations...
}

也许我做错了什么...
你能帮我吗?

1 个答案:

答案 0 :(得分:0)

将ID存储在动态按钮的 TAG 属性中,然后可以通过在点击事件中将“发送者”投射到按钮上来检索ID:

    private void Foo()
    {
        for (int i = 0; i < database.Rows.Count; i1++)
        {
            Button buttonNew = new Button();
            int id = Convert.ToInt32(row["id"]); //i get id elem of my database 
            buttonNew.Tag = id; // store the ID for later retrieval
            buttonNew.Click += ButtonNew_Click;
            // ... add "buttonNew" to something ...
        }

    }

    private void ButtonNew_Click(object sender, EventArgs e)
    {
        Button btn = sender as Button;
        int id = (int)btn.Tag;
        // ... do something with "id" ...
    }

请注意,点击处理程序的签名已更改。