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

#c#

#c#

Вопрос:

     private void btnCodeAkas_Click(object sender, EventArgs e)
    {
        tmrTimerAkas.Start();
        tmrTimerTwoAkas.Start();
        
    }
 

Но мне нужно настроить таргетинг только на одну кнопку, если она была нажата, как мне это сделать?

Комментарии:

1. Возможно, посмотрите на sender ?

2. Сравните sender с кнопками, которые у вас есть, с if() инструкцией?

3. Вы попали в ловушку событий, поместите свой код в метод и вызывайте его только из событий нажатия кнопок, которые вы хотите.

4. Есть ли еще код? Если нет, то почему несколько кнопок запускают это событие?

5. @Idle_Mind, почему? Потому что лень 🙂

Ответ №1:

ну, вы можете привести своего отправителя к управляющему объекту, чтобы вы могли получить имя кнопки, а затем написать свою условную логику.

        private void button1_Click(object sender, EventArgs e)
    {
        var control = sender as Control;

        if (control.Name == "button1")
        {
            Console.WriteLine($"Clicked {control.Name} button");
        }
        else if (((Control)sender).Name == "button2")
        {
            Console.WriteLine($"Clicked {control.Name} button");
        }
    }