如何获取多个button.Text值取决于单击的按钮

时间:2017-01-06 03:00:16

标签: c# datagridview

所以在我的程序中我想单击一个按钮并将该button.Text值放入一个datagridview表中。我有16个按钮,所以我不想为每个按钮重复整个代码,但是调用一个单一的方法来获取button.Text这样

//this would get button4.Text value and input into the table.

private void button4_Clicked(object sender, EventArgs e)
{
items_Add();
}

//this would get button5.Text value and input into table.

private void button5_Clicked(object sender, EventArgs e)
{
items_Add();
}

由于

3 个答案:

答案 0 :(得分:1)

这可能适合你。只需在所有按钮上订阅该活动。

button1.Click += myEventHandler;
button2.Click += myEventHandler;
button3.Click += myEventHandler;
button4.Click += myEventHandler;
button5.Click += myEventHandler;
button6.Click += myEventHandler;

然后

private void myEventHandler(object sender, EventArgs e)
{
    items_Add();
}

答案 1 :(得分:0)

您可以使用按钮的文字,同时决定在所有按钮的常用方法中执行哪些操作 当然,你可以通过将所有按钮订阅到单个事件监听器来制作公共事件监听器。

喜欢

button1.Click += button_Click;
button2.Click += button_Click;
button3.Click += button_Click;
...

private void button_Click(object sender, EventArgs e)
{
    Button b = sender as Button;
    if(b == null)
        return; // you can return, or throw an exception. It depends on your requirements.
    string text = b.Text;

    items_Add(text); //assuming this is your common method
}

编辑:在sender上添加了一些验证,以确保它真的是Button

答案 2 :(得分:-1)

这是另一种方法,每次点击按钮都会更灵活。

将所有按钮点击事件绑定到button1_Click

Button btn = sender as Button;
switch (btn.Text)
{
    case "textval1":
       items_Add();
        break;

    case "textval2":
        items_Add();
        break;

    case "textval3":
       items_Add();
       break;
}