可能重复:
C# Sending buttonclicks to same ObjectC#如何使用点击事件处理多个按钮
我已经在我的项目有很多按钮。通过编辑Designer.cs文件并将每次点击指向我的方法,使每个点击按钮的时间缩短为相同的“Button_click”方法。
this.button1.Click += new System.EventHandler(this.Mymethod);
如何识别Mymethod方法中按下哪个按钮?
谢谢!
可能重复:
C# Sending buttonclicks to same ObjectC#如何使用点击事件处理多个按钮
我已经在我的项目有很多按钮。通过编辑Designer.cs文件并将每次点击指向我的方法,使每个点击按钮的时间缩短为相同的“Button_click”方法。
this.button1.Click += new System.EventHandler(this.Mymethod);
如何识别Mymethod方法中按下哪个按钮?
谢谢!
的MyMethod必须声明是这样的:
void Mymethod (object sender, EventArgs e)
{
if (sender == btn1)
MessageBox.Show ("Button1");
}
使用发件人的说法。这是你的按钮(引发事件的对象)。
单击处理通常的结构是这样的:
protected void MyButton_Click(object sender, EventArgs e)
在此,你要寻找的是object sender
。这将是对发送点击事件的控件的引用。它的盒装作为object
但如果你知道的类型(在你的情况,你说,他们所有的按钮),那么你可以将它转换:
var myButton = (Button)sender;
你可能会发现,这个问题更清洁的方法是设置每个按钮的CommandName和CommandArgument,而不是使用OnClick使用共享的OnCommand处理程序。
该处理程序将接受CommandEventArgs参数而不是EventArgs参数,并且您将能够直接询问它以查看单击按钮的CommandName和CommandArgument。所有的按钮,想有相同的点击句柄数像1
,并把这种形式的构造函数来设置所有按钮单击事件处理程序
public void SetButtonClick(Control parent)
{
if (parent is Button)
{
(parent as Button).Click += new EventHandler(this.Mymethod);
}
foreach (Control item in parent.Controls)
{
SetButtonClick(item);
}
}
用于检查按钮
一套标记属性按下检查按钮标记
DUP http://stackoverflow.com/questions/6315737/c-sending-buttonclicks-to-same-object – 2011-06-11 12:36:34
除非我误以为,你应该把()关掉this.MyMethod。看起来你正在调用Mymethod并将Mymethod的返回值传递给EventHandler(这不起作用)。 – 2011-06-11 12:36:35