У меня есть 6 кнопок, которые я хочу привязать к одному и тому же обработчику. Как я могу это сделать?
Как я могу подписаться на несколько кнопок на один и тот же обработчик событий и действовать в соответствии с тем, какая кнопка была нажата?
Ответ 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
}
имя метода не имеет значения