2009-09-03 2 views
9

У меня есть WinForm, содержащий привязывающийNavigator вверху и splitContainer с двумя горизонтальными панелями под ним. Разделитель Контейнер заполняет пространство, не занятое привязкойNavigator.Исправлена ​​высота панели в SplitContainer

Я хотел бы установить нижнюю панель на фиксированную высоту, скажем 100 пикселей, и верхнюю панель заполнить остальную часть пространства.

Это мой текущий код:

kundeteamSplitContainer.SplitterDistance = kundeteamSplitContainer.Height - 100; 

я бы подумал, что это будет установить расстояние сплиттер динамически до 100 пикселей меньше общей высоты в любое время, делая нижнюю панель занимают оставшиеся 100 пиксели. Это не работает должным образом, поскольку нижняя панель меняет размер, когда я изменяю размер формы во время выполнения.

EDIT: Я придерживаюсь splitContainer, если это вообще возможно. Получил кучу функциональности, связанной со скрытием/показом нижней панели, уже реализованной, и я не хочу снова выполнять эту работу.

ответ

17

Как отметил Ли:

Установите FixedPanel свойство панели вы хотите, чтобы оставаться такой же размер.

Это работает так:

teamSplitContainer.SplitterDistance = teamSplitContainer.Height - 100; 
teamSplitContainer.FixedPanel = FixedPanel.Panel2; 
2

Я бы использовал TableLayoutControl для чего-то вроде этого, а не для Splitter.

+0

Ну, это может быть очень хорошо, но я не буду меняться. Мои более опытные коллеги сказали мне использовать сплиттер, поэтому я буду придерживаться его на данный момент. – Sakkle

+0

Справедливо. Я только использовал версию VS2005 и обнаружил, что это слишком багги. – MartW

+0

@Sakkle: Но если единственное требование - сохранить скрытый код, вы можете установить высоту строки таблицы TableLayoutPanel равным 0, и она будет работать практически так же ... –

26

Настройте свойство FixedPanel на панель, в которой вы хотите оставаться одного размера.

+0

Спасибо ... это положило меня на правильный путь – Sakkle

0

Если вы хотите только показать и отключить панель (без автоматического изменения размера, без изменения размера пользователя) добавить в коду Sakkle этой строки:

teamSplitContainer.IsSplitterFixed = true; 
2

Лучший способ, которым вы можете установить isSplitterFixed собственности на "True"

Property Window for splitcontainer

Смежные вопросы