Windows窗体中的许多按钮具有相同事件,如果我需要选择的按钮名称

时间:2018-12-12 09:28:04

标签: c# visual-studio winforms

我有46个按钮,形式各异,只是价值不同。 均值button1加1的总和,button2加2的总和... 有没有一种方法可以了解按下哪个按钮来获得Text

private void button1_Click(object sender, EventArgs e)
    {
        // call a function with this button TEXt
        // if button 1 selected -> func("1")
        // if button 2 selected -> func("2")
    } 

有什么办法吗?

4 个答案:

答案 0 :(得分:3)

sender返回您的按钮。因此您可以获得

之类的按钮
Button clicked = (Button)sender;

在指定按钮时,您可以检查发送方按钮的Text,也可以给他们Tag进行检查。你说的是文字,所以

Button clicked = (Button)sender;
func(clicked?.Text);

应该工作。

答案 1 :(得分:3)

Button clickedButton = sender as Button;

    if (clickedButton != null)
    {
        button.Name....
    }

答案 2 :(得分:1)

最直接的解决方案是为每个按钮创建一个event_click(因此,button1_Click,button2_Click等。最好将按钮命名为合适的。

比在每个事件处理程序中调用相同的函数将数字加到总和上,例如:

private void button1_Click(object sender, EventArgs e)
{
    add(1);
} 

private void button2_Click(object sender, EventArgs e)
{
    add(2);
} 

// Same for other event handlers.

private void add(int number)
{
   sum += number;
}

答案 3 :(得分:0)

您可以链接所有事件处理程序,然后使用Name属性来确定单击了哪个按钮。

this.button1.Click += new System.EventHandler(this.button1_Click);
this.button2.Click += this.button1_Click;

private void button1_Click(object sender, EventArgs e)
        {
            var btn = sender as Button;

            switch(btn.Name.ToLower())
            {
                case "button1":
                    MessageBox.Show("Add 1");
                    break;
                case "button2":
                    MessageBox.Show("Add 2");
                    break;
                default:
                    MessageBox.Show("Button not found");
                    break;
            }
        }