我有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")
}
有什么办法吗?
答案 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;
}
}