Я думал об этом.Хотя у меня нет смелого ответа для вас, я думал о нескольких способах сделать это.Проблема, как вы знаете, заключается в том, что события нажатия клавиш KeyDown и MouseLeftButton происходят после GotFocus.Я также не смог найти способ проверить состояние мыши и клавиатуры во время события GotFocus.
Вы можете добавить новое событие TabFocus и ClickFocus и запустить их при событии click или tab.
В вашем событии gotFocus установите флажок для userControl.
justGotFocus = true;
добавьте события в публичное событие TabFocus, ClickFocus (метакод)
и затемв событиях Mouse и Key вы
TabFocus (это, новые EventArgs ())
ClickFocus (это, новые EventArgs ())
или просто вызываете центральную функциюс параметром FocusType
открытое событие SpecificFocusEvent SpecificFocus (this, FocusType.TabKey)
Извините ... устал ... ужасный код = P
Вы можете поставить вышеуказанноев присоединенное свойство для повторного использования.
ИЛИ где-то есть флаг, который я еще не нашел = P
pj
EDIT
Вы на правильном пути, просто немного не в порядке.Установите флаг для событий MouseDown, прочитайте его с помощью GotFocus и очистите его в MouseUp / GotFocus / LostFocus.Это чертовски ужасно, но обычно это работает.