Подтвердить что ты не робот

Как я могу подписаться на несколько кнопок на один и тот же обработчик событий и действовать в соответствии с тем, какая кнопка была нажата?

У меня есть 6 кнопок, которые я хочу привязать к одному и тому же обработчику. Как я могу это сделать?

4b9b3361

Ответ 1

Когда вы подписываетесь на событие на кнопке, это просто стандартный обработчик событий:

button1.Click += myEventHandler;

Вы можете использовать тот же код для добавления обработчиков для каждой кнопки:

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

Это приведет к тому, что ваш обработчик в myEventHandler будет запущен при нажатии любой из кнопок.

Ответ 2

Вы можете присоединить одно и то же событие к нескольким кнопкам, привязав один и тот же метод к каждому событию с нажатием кнопок

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
}

Ответ 3

Просто подключите кнопки к одному и тому же событию:

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 и получить доступ к любому свойству, которое вам нужно, чтобы отличить фактическую кнопку.

Ответ 4

Как увидеть, какая кнопка была нажата:

Используйте sender

Button myButton = (Button)sender;

sender - это параметр типа object в обработчике событий.

Ответ 5

Вместо двойного щелчка события в конструкторе вы можете вставить имя обработчика события в событие в сетке свойств конструктора.

Ответ 6

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;
               }
}

Ответ 7

Я не эксперт, но я использую это, и это выглядит довольно просто.

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

Просто дайте обе кнопки одно и то же событие клика

Ответ 8

В main.axml добавьте это ко всем кнопкам

android:clickable="whateveryoulike"

и все кнопки должны иметь один и тот же идентификатор

в MainActivity

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

имя метода не имеет значения