我正在制作麻将游戏,而且我对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);
答案 0 :(得分:4)
事件处理程序的第一个参数是发送者,您可以将其强制转换为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
可以隐藏潜在的错误。使用上面示例中的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
}
答案 1 :(得分:0)
使用以下代码,您可以获得单击的按钮
protected void Button1_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
}
答案 2 :(得分:0)
处理点击“n1_click”的功能
private void n1_click(object sender, EventArgs e)
{
Button temp = (Button)sender;
string neededText = temp.Text;
}
private void n1_click(object sender, EventArgs e)
{
Button temp = (Button)sender;
string neededText = temp.Text;
}