Изменить макет стыковки в 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-порядка просто приводит к переупорядочению сгенерированного кода.

Другие вопросы по тегам