У меня есть UserControl, состоящий из трех текстовых полей. В форме у меня может быть один или несколько или мой UserControl. Я хочу реализовать собственное поведение вкладок, поэтому, если пользователь нажимает Tab во втором текстовом поле, я должен переходить к третьему текстовому полю только в том случае, если во втором текстовом поле что-то введено. Если во втором текстовом поле ничего не введено, следующий элемент управления формы должен получить фокус в соответствии с обычным поведением вкладки. Если пользователь ничего не ввел в первом или втором TextBox и на вкладке Presses, существует особый случай, когда элемент управления в форме следует пропустить.
Используя ProcessDialogKey, мне удалось заставить его работать нормально, но у меня все еще есть одна проблема. Мой вопрос заключается в том, есть ли способ определить, как элемент управления WinForms получил фокус, поскольку я также хотел бы знать, получил ли мой UserControl фокус с Tab или Shift-Tab, а затем делать мои странные вещи, но если пользователь щелкает элемент управления, я не хочу делать ничего особенного.