1

我正在尝试为我动态生成的按钮列表定义一个 keyUp 事件,但我找不到合适的方法来执行此操作。

这是我用来生成按钮的代码。

public void generateurBtns()
    {
        test.cmd.CommandText = "select id from Citoyens";
        test.cmd.Connection = test.cnx;
        test.dr = test.cmd.ExecuteReader();

        while (test.dr.Read())
        {
            Button Citoyen = new Button();
            citoyensBtns.Add(Citoyen);
            this.Controls.Add(Citoyen);
            Citoyen.Name = test.dr[0].ToString();
            Citoyen.Click += new EventHandler(button_keyup);
            
        }
        test.dr.Close();
    }

我定义了 button_keyup 方法如下。

void button_keyup(object sender, EventArgs e)
    {
        //code executed if button released
    }

关于如何使这项工作的任何建议?

4

1 回答 1

1

您是否尝试过KeyUpevent 而不是Click

public void generateurBtns()
{
    test.cmd.CommandText = "select id from Citoyens";
    test.cmd.Connection = test.cnx;
    test.dr = test.cmd.ExecuteReader();

    while (test.dr.Read())
    {
        Button Citoyen = new Button();
        citoyensBtns.Add(Citoyen);
        this.Controls.Add(Citoyen);
        Citoyen.Name = test.dr[0].ToString();
        Citoyen.KeyUp += new KeyEventHandler(button_keyup);
        
    }
    test.dr.Close();
}

更新:您还需要实现正确的委托:

void button_keyup(object? sender, KeyEventArgs e)
{
    //code executed if button released
}
于 2021-01-04T17:47:03.170 回答