首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当动态创建的按钮被单击时,如何获取它们的名称?

当动态创建的按钮被单击时,如何获取它们的名称?
EN

Stack Overflow用户
提问于 2011-06-17 20:26:39
回答 3查看 282关注 0票数 2

我正在做一个麻将游戏,而且我是C#的新手,我想知道当一个按钮被点击时,我怎么取它的名字。所有按钮都是在表单中动态创建的。

代码语言:javascript
运行
复制
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;
    }

在表单中,我使用以下代码获取按钮

代码语言:javascript
运行
复制
myButton = createButton(tp);
myButton.Location = new System.Drawing.Point(25 , 25);
this.Controls.Add(myButton);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-06-17 20:28:49

事件处理程序的第一个参数是发送者,您可以将其强制转换为Button,然后访问Name属性。

下面是事件处理程序的一个小示例。

代码语言:javascript
运行
复制
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,但这也存在一个问题,因为它现在静默地失败了,您可能不会在代码中发现错误。如果抛出了异常,您就会意识到有问题,并能够追踪到它。所以更新后的代码应该是这样的。

代码语言:javascript
运行
复制
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
}
票数 4
EN

Stack Overflow用户

发布于 2011-06-17 20:32:23

使用以下代码,您可以获得所单击的按钮

代码语言:javascript
运行
复制
    protected void Button1_Click(object sender, EventArgs e)
    {
        Button btn = (Button)sender;
    }
票数 0
EN

Stack Overflow用户

发布于 2011-06-17 20:36:19

关于处理点击的函数"n1_click“

代码语言:javascript
运行
复制
private void n1_click(object sender, EventArgs e)
{
     Button temp = (Button)sender;
     string neededText = temp.Text;
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6385701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档