获取被点击按钮的文本值

20

我正在尝试获取被点击的按钮的文本值。在我的脑海中,它看起来像这样:

private void button2_Click(object sender, EventArgs e)
{
    string s =  thisbutton.text
}
6个回答

48

触发事件的对象是sender,因此:

private void button2_Click(object sender, EventArgs e)
{
    string s = (sender as Button).Text;
}

当我使用它时,我会得到错误提示:“Button”不包含“Text”的定义,而智能感知只会给我提供类似于“TextInput”的选项。 - Dumitru Daniel
2
@DumitruDaniel 当使用WPF时,您必须使用(sender as Button).Content。我想.Text是与Windows Forms相关的。 - metatron

5

将sender对象强制转换为Button对象,并访问text属性:

protected void btn_Click (object sender, EventArgs e){
   Button btn = sender as Button;
   string s= btn.Text
}

2
应该是这样的:
private void button2_Click(object sender, EventArgs e)
{
  string s =  this.button2.Text;
}

this.button2.Text; 实际上会获取按钮2的文本,因此文本将始终相同。 - M.kazem Akhgary
我假设这个事件是共享给多个按钮的。不要关注方法名称button2_Click - M.kazem Akhgary
我真的想动态地访问按钮,这样我就可以使用相同的代码。请参见上面接受的答案。我想我应该更清楚一些。 - user3755946

1
在每个内置事件处理程序中,都有2个参数sendereSender引用触发事件的对象。第二个参数e包含有关事件的一些信息(例如指针位置和其他类似信息)。您只需将其转换为Button类型并获取所需信息即可。

0

尝试将此示例应用于您的按钮事件中

private void button_click(object sender, EventArgs e)
{
   var getValue = ((Button)sender).Text; //this will get the value of the text using sender
}

0
这个问题在一段时间前就被问过了,我的平台可能与原帖提到的有些不同,但对于GTK我得出了相同的问题。
我正在使用GTK2+在OSX中用Xamarin/Visual Studio开发,对我来说原始的答案是接近的,但会报错,因为“. Text”不存在。在我的情况下,需要使用“Label”。这个对我很有效:
protected void Button_Clicked(object sender, EventArgs e)
{
    Button btn = sender as Button;

    lblWhichButton.Text = btn.Label;
    if (btn.Label == "<<<" )
        i--;
    else
        i++;
    lblCounter.Text = "" + i;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接