How can I tell if a Control.Click event was triggered by the mouse or by the keyboard?
Edit:
Handling MouseClick and KeyPress does't work for me, because then how would I know if something else triggered the click? (e.g. PerformClick)
You can't. Use the Control.MouseClick event and the Control.KeyPress event so you can tell the source of the event. And remember that a space on the control with focus and a Ctrl+ key can generate a click on a button as well.
You can not tell, but you can use MouseClick and KeyPress if you need to know what originated the event.
void handler(object sender, EventArgs e)
{
bool mouseEvent = (e is MouseEventArgs);
bool keyEvent = (e is KeyEventArgs);
bool performClick = (e is EventArgs) && !keyEvent && !mouseEvent;
}
来源:https://stackoverflow.com/questions/6645387/how-to-detect-if-the-control-click-event-was-by-the-mouse-keyboard-or-somethin