Form.Controls.SetChildIndex () помогает мне. Даже ControlAdded () может быть использован для установки дочернего индекса. Спасибо "Quintin Robinson" за это предложение.
Логика, которую я использовал для своих целей:
Я сделал 3 разных (логических) группы индексов вкладок для всех пользовательских элементов управления, которые есть на холсте. При добавлении / удалении элемента управления я быстро переиндексирую все элементы управления, находящиеся на холсте. Таким образом, у меня всегда есть текущий линейный порядок индексов вкладок, так как они назначаются каждый раз, когда изменяется количество элементов управления на холсте.
В зависимости от моего требования о порядке Z для аналогичных типов контроля, я переиндексирую их. (например, все элементы индексируются от 0 до i-1, соединители индексируются от i до j-1, а плоскости индексируются от j до k-1; где i, j, k - количество элементов, соединителей и плоскостей соответственно.)