2010-07-26 3 views
23

Я не могу понять, как сохранить ширину панели, зафиксированную в разделительном контейнере в WinForm.Сохранение одной разделительной панели контейнера Фиксированная ширина?

Любые предложения?

+0

Если вы хотите, чтобы ширина была фиксированной, зачем использовать раздельный контейнер? Вы можете использовать две панели. Или, вероятно, лучше использовать свойства привязки для каждого элемента управления. –

+0

Сплит-контейнеры специально предназначены для жидких панелей? doh! – sooprise

ответ

7

Если вы сохранили размер одной панели, логического способа перемещения разделителя нет. Поскольку вы не можете переместить сплиттер, просто не имеет смысла использовать SplitContainer больше. Используйте два элемента управления панелью.

+2

Или TableLayoutPanel может быть лучше подходит вместо двух отдельных и практически независимых панелей. –

+0

спасибо за лидерство в правильном направлении, на самом деле не имеет смысла иметь splicontainer в этом случае :) – Prokurors

+1

Я не согласен. Возьмем, к примеру, случай, когда у меня встроенные сплит-контейнеры. У меня 3 сегмента, 2 из которых я хочу изменить (думаю, 3 столбца - левый столбец данных, правый столбец данных и столбец с кнопками в середине с фиксированной шириной). Итак, если я просто использую 1 разделенный контейнер, я не могу поместить панель в правую сторону и прикрепить элемент управления Listbox. Список попадает за панель и частично скрывается. –

72

свойства SplitterPanel.FixedPanel - установить одну из панелей фиксированного размера

свойства SplitterPanel.IsSplitterFixed - установить истинный

+15

Это должен быть правильный ответ! –

+0

Обратите внимание, что, когда общий размер SplitContainer становится слишком маленьким, фиксированная панель будет уменьшаться, и она не вернется к «фиксированному» размеру, если вы не позаботитесь об этом в событии SizeChanged ... –

+0

выиграл мин. размер панели предотвращает эту проблему? – gg89

8

Для того, чтобы сделать panel1 фиксированную В свойствах SplitContainer, установите FixedPanel свойство Panel1.

Затем установите SplitDistance и Panel1MinSize на то же значение.

+0

Спасибо, он отлично работает ... –

+0

Спасибо, что помогает. Одна коррекция, свойство «SplitterDistance», а не SplitDistance. Кроме того, мне пришлось изменить код за формой, поскольку свойства не были доступны в окне «Свойства» в среде IDE или через код в событиях формы (например, «Загрузка формы»). –

+0

Я возвращаю его, это не сработало. –

1
// from Microsoft documentation similar to Dmitri answer::::::::::: 
// if make panel1 fixed: 
mySplitContainer.FixPanel = System.Windows.Forms.FixedPanel.Panel1; 

// if make panel2 fixed (in this case can't use fixed splitter distance): 
mySplitContainer.FixPanel = System.Windows.Forms.FixedPanel.Panel2; 

// and to be safe set the appropriate panel min size for the splitcontainer too; 
0

Это зависит от того, что вы хотите.

FixedPanel давайте изменим размер панели, но она не будет изменяться автоматически при изменении размера элемента управления.

IsSplitterFixed отключит сплиттер, но при изменении размера элемента управления он будет автоматически изменяться.

Если вы используете оба варианта, то он будет полностью фиксированным. Но тогда вам лучше использовать две панели, как сказал Ганс.

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