8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如何为同一个事件处理程序订阅多个按钮并根据所单击的按钮采取行动?

righN 2月前

88 0

我有 6 个按钮,我想将它们附加到同一个处理程序。我该怎么做?

我有 6 个按钮,我想将它们附加到同一个处理程序。我该怎么做?

帖子版权声明 1、本帖标题:如何为同一个事件处理程序订阅多个按钮并根据所单击的按钮采取行动?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由righN在本站《winforms》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这正是我想避免的。我可以双击设计器视图上的按钮并生成 6 个存根,但是当我只需将按钮订阅到单个事件时,我为什么要这样做呢?

  • 当您订阅按钮上的事件时,它只是一个标准事件处理程序:

    button1.Click += myEventHandler;
    

    您可以使用相同的代码为每个按钮添加处理程序:

    button1.Click += myEventHandler;
    button2.Click += myEventHandler;
    button3.Click += myEventHandler;
    button4.Click += myEventHandler;
    button5.Click += myEventHandler;
    button6.Click += myEventHandler;
    

    当单击任意按钮时, myEventHandler 这将导致运行您的处理程序

  • 您可以将相同的事件附加到多个按钮,方法是将相同的方法绑定到每个按钮的单击事件

    myButton1.Click += new MyButtonClick;
    myButton2.Click += new MyButtonClick;
    myButton3.Click += new MyButtonClick;
    myButton4.Click += new MyButtonClick;
    myButton5.Click += new MyButtonClick;
    myButton6.Click += new MyButtonClick;
    
    void MyButtonClick(object sender, EventArgs e)
    {
        Button button = sender as Button;
        //here you can check which button was clicked by the sender
    }
    
  • 我已使用 CommandName 和 CommandArgument 来识别链接到相同 onclick 事件的不同按钮。我给你 +1。

  • 只需将按钮连接到同一个事件:

    myButton1.Click += Button_Click;
    myButton2.Click += Button_Click;
    myButton3.Click += Button_Click;
    ...
    

    并相应地处理按钮:

    private void Button_Click(object sender, EventArgs e)
    {
        string buttonText = ((Button)sender).Text;
    
        switch (buttonText)
        {
            ...
        }
    }
    

    对象 sender 包含对引发 Click 事件的按钮的引用。您可以将其强制转换回 Button ,并访问您需要的任何属性以区分实际的按钮。

  • 如何查看按下了哪个按钮:

    使用 sender

    Button myButton = (Button)sender;
    

    sender 事件处理程序中 object 的类型参数

  • 您无需双击设计器中的事件,可以将事件处理程序的名称粘贴到设计器属性网格中的事件中。

  • myButton1.Click += new EventHandler(MyButtonClick);
    myButton2.Click += new EventHandler(MyButtonClick);
    myButton3.Click += new EventHandler(MyButtonClick);
    myButton4.Click += new EventHandler(MyButtonClick);
    myButton5.Click += new EventHandler(MyButtonClick);
    myButton6.Click += new EventHandler(MyButtonClick);
    
    public void MyButtonClick(object sender, MouseButtonEventArgs e)
    {
                    switch ((sender as Button).Name)
                    {
                    case "button1":
                        //actions
                        break;
                    case "button2":
                        //actions
                        break;
                    default:
                        break;
                   }
    }
    
  • 我不是专家,但我用过这个,它看起来很简单

    <Button x:Name="Button1" Content="Button" Click="Button_Click"/>
    <Button x:Name="Button2" Content="Button" Click="Button_Click"/>
    

    只需为两个按钮赋予相同的点击事件

  •  button1.Click += button_Click;
     button2.Click += button_Click;
    
    void button_Click(object sender, EventArgs e)
            {
                if (sender == button1)
                {
                    this.Text = "1";
                }
                else if (sender == button2)
                {
                    this.Text = "2";
                }
            }
  • 在 main.axml 中将其添加到所有按钮

    android:clickable="whateveryoulike"
    

    并且所有按钮都需要有相同的 id

    在 MainActivity 中

    [Java.Interop.Export("whateveryoulike")]
    void whateveryoulike2(View v){
    Button button=(Button) v;
    //your code here
    }
    

    方法的名称并不重要

返回
作者最近主题: