Панели (panel) и разделители (splitter) c#

286
15 марта 2017, 15:58

На форме три панели разделенные двумя сплиттерами. Пусть порядок расположения элементов слева направо: panel1, splitter1, panel2, splitter2, panel3.

При перемещении splitter1, автоматически меняет положение splitter2, соответственно изменяя размер panel3.

Как сделать, чтобы при движении splitter1, splitter2 оставался на своем месте?

Answer 1

Зачем вам второй сплиттер в таком случае ?

Правильнее было бы использовать TableLayoutPanel, сделать в ней 2 столбца. В первом поместить две панели и сплиттер между ними. Во второй столбец поместите третью панель. И обоим столбцам задайте фиксированный размер по ширине в %.

Answer 2

Splitter2 зависит от Splitter1, по этому Splitter2 всегда двигается когда двигаешь Splitter1. Если хочешь не зависимую сплиттеры, придется делать свой сплиттер.

Answer 3

Для получения желаемого эффекта нужно добавлять элементы в определенном порядке и корректировать свойство Dock.

Порядок добавления элементов на форму от края в центр:

panel1 (Dock = Left)
splitter1 (Dock = Left)
panel12 (Dock = Right)
splitter2 (Dock = Right)
panel3 (Dock = Fill)

Т.к. сплитеры прижимаются к крайним панелям, они не будут влиять друг на друга при изменении положения на форме. Для вертикального размещения заменяем Left => Up, Right => Down.

Как всегда не без ложки дегтя. Такой вариант плохо подходит для контейнера переменного размера, т.к. ширина крайних панелей не будет меняться автоматически пропорционально размеру контейнера, а следовательно возможна ситуация, когда при уменьшении окна левая и правая панели наложатся друг на друга, скрывая и среднюю панель и сплитеры. Для исправления ситуации нужно дописать обработку изменения размера внешнего контейнера, в которой предусмотреть соответствующее изменение размеров крайних панелей. Положение сплитеров и размер центральной панели подстроятся автоматически, благодаря свойству Dock.

READ ALSO
Работа с изображениями в консоли в C#?

Работа с изображениями в консоли в C#?

Возможно ли работать с изображениями в консоли в C#? Отображение не интересует, схема такова:

324
Изменение wal autocheckpoint в sqlite

Изменение wal autocheckpoint в sqlite

Не могу найти параметр для изменения wal autocheckpoint и checkpointwal_autocheckpoint = n;checkpoint = full; не работает

286
VS2012 компиляция под Windows XP

VS2012 компиляция под Windows XP

Есть рабочий проект, все работает, НО хочется чтобы работало и под Windows XPПишу в VS2012 (есть еще VS2015)

261
Символ $ в json ответе (ASP.NET WebAPI)

Символ $ в json ответе (ASP.NET WebAPI)

Есть ASPNET Web API Есть контроллер на получение данных

199