У меня была такая же проблема. Мое решение состояло в том, чтобы поместить все элементы управления в подпанели формы. Вкладка алгоритма .net заключается во вкладке внутри «текущего» контейнера с помощью TabIndex. Если какой-либо из TabIndexes в контейнере одинаков, первый в z-порядке будет первым и т. Д.
Оказавшись в контейнере (форма является контейнером), все элементы управления, кроме контейнеров (панелей), вкладываются в первую очередь. При выходе из последнего неконтейнерного контроля панели возвращаются в.
Таким образом, если все элементы управления размещены в контейнерах / панелях на одном уровне, вкладка будет выполнена, как вы ожидаете.
Пример задачи:
Form
control1 Tabindex=1
panel1
control2 Tabindex=2
control3 Tabindex=2
panel2
control4 Tabindex=4
control5 Tabindex=5
control6 Tabindex=6
Вкладка будет в следующем порядке (не то, что вы ожидали):
Control1
Control6 <-- not what you wanted/expected
Control2
Control3
Control4
Control5
Чтобы правильно перейти на вкладку, расположите по следующему шаблону:
Form
panel0
control1 Tabindex=1
panel1
control2 Tabindex=2
control3 Tabindex=2
panel2
control4 Tabindex=4
control5 Tabindex=5
panel3
control6 Tabindex=6