【问题标题】:one Click event for multiple buttons with Text property具有 Text 属性的多个按钮的单击事件
【发布时间】:2014-03-09 16:10:59
【问题描述】:

我想为一堆按钮创建一个点击事件。问题是我想使用按钮的文本,并将其传递给函数。现在点击事件被传递给一个对象发送者。当我尝试将其更改为 Button sender 时,它给出了错误。但我不知道我还能如何处理发件人的文本。

这是正常的代码,它给出了一个错误:

private void guess_Click(object sender, EventArgs e)
{
     guess(sender.Text);
}

我改成这个,报错了:

private void guess_Click(Button sender, EventArgs e)
{
     guess(sender.Text);
}

问题: 如何在此单击事件中使用 Button 的 Text 属性,这是多个按钮的单个 click_event?

【问题讨论】:

    标签: c# events button text properties


    【解决方案1】:

    第 1 步:您需要将所有按钮的 Button Click 事件订阅到同一个 EventHandler。因此,单击所有按钮的按钮将触发相同的“事件处理程序”。

    第 2 步:您需要将对象sender 转换为Button,然后访问其Text 属性以获取按钮文本。

    试试这个:

    button1.Click += new System.EventHandler(MyButtonClick);
    button2.Click += new System.EventHandler(MyButtonClick);
    button3.Click += new System.EventHandler(MyButtonClick);
    
    private void MyButtonClick(object sender, EventArgs e)
    {
      Button btnClick =  (Button)sender ;
      guess(btnClick.Text);
    }
    

    【讨论】:

      【解决方案2】:

      将发件人投射到键入按钮。

      例子:

      private void guess_Click(object sender, EventArgs e)
      {
           guess(((Button)sender).Text);
      }
      

      【讨论】:

        【解决方案3】:

        您需要将 sender 对象转换为 Button 类型并使用它:

        private void guess_Click(object sender, EventArgs e)
        {
            Button senderBtn = senderBtn as Button;
            if(senderBtn != null)
            {
                guess(senderBtn.Text);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多