Как определить, было ли событие Control.Click мышью, клавиатурой или чем-то еще? - PullRequest
3 голосов
/ 11 июля 2011

Как узнать, было ли событие Control.Click вызвано мышью или клавиатурой?

Edit:

Обработка MouseClick и KeyPress не работает для меня, потому что тогда как я узнаю, что что-то еще вызовет щелчок? (например, PerformClick)

Ответы [ 2 ]

6 голосов
/ 11 июля 2011

Вы не можете.Используйте событие Control.MouseClick и событие Control.KeyPress , чтобы определить источник события.И помните, что пробел в элементе управления с фокусом и клавишей Ctrl + может также генерировать щелчок по кнопке.

3 голосов
/ 11 июля 2011

Вы не можете сказать, но вы можете использовать MouseClick и KeyPress, если вам нужно знать, что вызвало событие.

void handler(object sender, EventArgs e)
{
    bool mouseEvent = (e is MouseEventArgs);
    bool keyEvent = (e is KeyEventArgs);
    bool performClick = (e is EventArgs) && !keyEvent && !mouseEvent;
}
...