кнопка много в форме окна с тем же событием, в случае, если мне нужно имя кнопки, которая выбрала - PullRequest
0 голосов
/ 12 декабря 2018

У меня 46 кнопок в форме, и все они работают одинаково, просто по-разному.означает button1 плюс 1 к сумме, button2 плюс 2 к сумме ... есть ли способ понять, какая из кнопок нажата, чтобы получить ее Text

private void button1_Click(object sender, EventArgs e)
    {
        // call a function with this button TEXt
        // if button 1 selected -> func("1")
        // if button 2 selected -> func("2")
    } 

есть ли способсделать это?

Ответы [ 4 ]

0 голосов
/ 12 декабря 2018

Вы можете связать все ваши обработчики событий, а затем использовать свойство Name, чтобы решить, какая кнопка была нажата.

this.button1.Click += new System.EventHandler(this.button1_Click);
this.button2.Click += this.button1_Click;

private void button1_Click(object sender, EventArgs e)
        {
            var btn = sender as Button;

            switch(btn.Name.ToLower())
            {
                case "button1":
                    MessageBox.Show("Add 1");
                    break;
                case "button2":
                    MessageBox.Show("Add 2");
                    break;
                default:
                    MessageBox.Show("Button not found");
                    break;
            }
        }
0 голосов
/ 12 декабря 2018

sender возвращает вашу кнопку. Таким образом, вы можете получить такую ​​кнопку, как

Button clicked = (Button)sender;

При указании кнопок вы можете проверить, что у кнопки отправителя Text или вы можете дать им Tag и проверитьих.Вы сказали текст, поэтому

Button clicked = (Button)sender;
func(clicked?.Text);

должно работать.

0 голосов
/ 12 декабря 2018
Button clickedButton = sender as Button;

    if (clickedButton != null)
    {
        button.Name....
    }
0 голосов
/ 12 декабря 2018

Самое простое решение - создать для каждой кнопки event_click (т.е. button1_Click, button2_Click и т. Д. Лучше назвать кнопки соответствующими.

Чем из каждого обработчика событий вызывать ту же функцию, чтобы добавить номерк сумме, например:

private void button1_Click(object sender, EventArgs e)
{
    add(1);
} 

private void button2_Click(object sender, EventArgs e)
{
    add(2);
} 

// Same for other event handlers.

private void add(int number)
{
   sum += number;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...