我正在做一个麻将游戏,而且我是C#的新手,我想知道当一个按钮被点击时,我怎么取它的名字。所有按钮都是在表单中动态创建的。
public Button createButton(node x)
{
Button nButton;
nButton = new Button();
nButton.Name = x.info.ToString();
nButton.Text = x.info.ToString();
nButton.Width = 55;
nButton.Height = 75;
nButton.Visible = true;
if (x.isValid())
nButton.Enabled = true;
else
nButton.Enabled = false;
nButton.Click += new System.EventHandler(n1_click);
return nButton;
}在表单中,我使用以下代码获取按钮
myButton = createButton(tp);
myButton.Location = new System.Drawing.Point(25 , 25);
this.Controls.Add(myButton);发布于 2011-06-17 20:28:49
事件处理程序的第一个参数是发送者,您可以将其强制转换为Button,然后访问Name属性。
下面是事件处理程序的一个小示例。
private void Button_Click(object sender, EventArgs e)
{
Button button = sender as Button;
if (button != null)
{
// Do something with button.Name
}
}编辑:正如Hans在评论中提到的,使用as可能会隐藏一个潜在的bug。使用上面示例中的as操作符可以确保,如果您无意中将此处理程序连接到另一个控件的事件,代码将很好地处理它,并且不会抛出InvalidCastException,但这也存在一个问题,因为它现在静默地失败了,您可能不会在代码中发现错误。如果抛出了异常,您就会意识到有问题,并能够追踪到它。所以更新后的代码应该是这样的。
private void Button_Click(object sender, EventArgs e)
{
// If sender is not a Button this will raise an exception
Button button = (Button)sender;
// Do something with button.Name
}发布于 2011-06-17 20:32:23
使用以下代码,您可以获得所单击的按钮
protected void Button1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
}发布于 2011-06-17 20:36:19
关于处理点击的函数"n1_click“
private void n1_click(object sender, EventArgs e)
{
Button temp = (Button)sender;
string neededText = temp.Text;
}
https://stackoverflow.com/questions/6385701
复制相似问题