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