C# windows窗体中具有相同事件的多个按钮,在事件中我需要所选按钮的名称
我有46个按钮的形式和他们所有的相同的工作只是不同的价值。 平均值C# windows窗体中具有相同事件的多个按钮,在事件中我需要所选按钮的名称,c#,visual-studio,winforms,C#,Visual Studio,Winforms,我有46个按钮的形式和他们所有的相同的工作只是不同的价值。 平均值按钮1加1求和,按钮2加2求和。。。 是否有办法了解按下哪一个按钮以获取文本 private void button1_Click(object sender, EventArgs e) { // call a function with this button TEXt // if button 1 selected -> func("1") // if button
按钮1
加1求和,按钮2
加2求和。。。
是否有办法了解按下哪一个按钮以获取文本
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")
}
有什么方法可以做到吗?最简单的解决方案是为每个按钮创建一个事件单击(因此按钮1单击、按钮2单击等)。最好将按钮命名为合适的 而不是在每个事件处理程序中,调用相同的函数将数字添加到总和中,例如:
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;
}
最简单的解决方案是为每个按钮创建一个事件单击(因此按钮1单击、按钮2单击等)。最好将按钮命名为合适的名称 而不是在每个事件处理程序中,调用相同的函数将数字添加到总和中,例如:
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;
}
sender
返回您的按钮。因此您可以像
Button clicked = (Button)sender;
在指定按钮时,您可以检查发送者按钮的文本
,也可以给它们标签
并检查它们。您说的是文本,所以
Button clicked = (Button)sender;
func(clicked?.Text);
应该可以用。
发送方将返回您的按钮。这样您就可以像
Button clicked = (Button)sender;
Button clickedButton = sender as Button;
if (clickedButton != null)
{
button.Name....
}
在指定按钮时,您可以检查发送者按钮的文本
,也可以给它们标签
并检查它们。您说的是文本,所以
Button clicked = (Button)sender;
func(clicked?.Text);
应该可以工作。您可以链接所有事件处理程序,然后使用Name
属性确定单击了哪个按钮
Button clickedButton = sender as Button;
if (clickedButton != null)
{
button.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;
}
}
您可以链接所有事件处理程序,然后使用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;
}
}
我知道这一点,但它会导致46函数有什么方法可以同时完成所有功能吗?我不知道,但在这种情况下,我通常会做的是,在事件中放置一个断点,启动调试器,并检查发送方在内部的外观;我确信有一些线索表明选择了哪个按钮。(根据其他答案,发送方就是按钮)。我知道这一点,但它会导致46函数有任何方法可以同时完成所有操作吗?我不知道,但在这种情况下,我通常会做的是在事件中放置一个断点,启动调试器,并检查发送者在内部的外观;我确信有一些线索表明选择了哪个按钮。(根据其他答案,发送者就是按钮)。按钮在WinForms中只有一个文本
属性,但没有内容
属性。除此之外,这应该是可接受的答案。我从这篇文章中得到了答案,并将尽可能标记为答案。哦,我错过了表单部分,并认为这是WPF。编辑rn。按钮只有文本
属性,但没有WinForms中的Content
属性。除此之外,这应该是可接受的答案。我从这篇文章中得到答案,并将尽可能标记为答案。哦,我错过了表单部分,并认为这是WPF。编辑rn。