Изменить макет стыковки в WinForms
У меня есть SplitContainer
в моей форме со свойством Dock, установленным в Fill. Он содержит несколько дочерних элементов управления, ко многим из которых прикреплены обработчики событий. Позже я решаю поставить StatusStrip
в нижней части моей формы. Угадай, что я не могу установить StatusStrip
док до нижней части моей формы. SplitContainer
продолжит заполнять всю форму. Хотя StatusStrip
очевидно, пристыкован ко дну, он на самом деле скрывает нижнюю часть SplitContainer
за этим.
Единственное, что вокруг него - это РЕЗАТЬ SplitContainer
и затем вставьте его обратно. Резка SplitContainer
делает StatusStrip
единственный элемент управления в моей форме и, таким образом, позволяет захватить нижнюю стыковку. После этого SplitContainer
позволяет заполнить оставшуюся область. Короче говоря, для стыковки используется метод First Come, First Serve.
Теперь, поскольку к моим элементам управления подключено множество обработчиков событий, вырезание и вставка становится для меня кошмаром. Наличие моего проекта в C# означает, что я должен присоединить все эти обработчики событий вручную.
Есть ли лучшая работа вокруг?
1 ответ
Это проблема z-порядка между разделителем и строкой состояния. Если у вас есть элемент управления, который вы хотите прикрепить к заливке, и один или несколько элементов управления, которые вы хотите прикрепить сверху, слева, справа или снизу, вы должны иметь элемент управления заливкой первым в z-порядке.
Лучше всего открыть инструмент "Структура документа", выбрать SplitContainer и использовать кнопки "вверх" или "вниз" для изменения его z-порядка.
Я должен добавить, что в Winforms z-порядок определяется порядком, в котором вы добавляете элементы управления в коллекцию Controls. Этот порядок определяет порядок создания связанных системных элементов управления, следовательно, их z-порядок. Использование инструмента "Структура документа" для изменения z-порядка просто приводит к переупорядочению сгенерированного кода.