2010-08-13 3 views
2

Есть ли способ сделать SplitContainer только регулировкой размера панели1? У меня есть Vertical SplitContainer, и когда я перемещаю сплиттер, я хотел бы увеличить/уменьшить размер первой панели, но вместо изменения размера второй панели я хочу, чтобы форма увеличивалась и уменьшалась в размере.SplitContainer, который только изменяет размер панели1

Я создал некоторый код для увеличения/уменьшения размера формы, но Panel2 также меняет размер, поэтому вся панель не всегда видна.

Должен ли я создать свой собственный контейнер, или это возможно с SplitContainer?

У меня есть форма «MainWin», которая содержит панель «MainPanel» MainPanel содержит SplitContainer «MainSplitContainer». Панель 1 содержит TreeView, а Panel2 содержит 3 панели, которые становятся видимыми на основе того, какой элемент выбран в TreeView. Я хочу, чтобы эти 3 панели всегда были полностью видимыми (я планирую ограничить расширение сплиттера, чтобы форма не могла расширяться за пределы экрана), возможно ли это или я должен просто создать свой собственный элемент управления и настроить размер вещей, используя события MouseDown, MouseUp и MouseMove?

ответ

-1

В итоге я создал свой собственный контроль.

+0

это бесполезно ответ - никаких подробностей , нет объяснений – Prokurors

+0

Ну, не совсем бесполезно. Это дало мне информацию о том, что я не могу получить результат, который я хочу с помощью SplitContainer. «Использовать FixedPanel» - неправильный ответ. –

6

Нет необходимости создавать свою собственную форму: SplitContainer имеет свойство: «FixedPanel» Выберите SplitContainer и в разделе «Макет» посмотрите на «FixedPanel». Установите его на панель, где вы хотите оставаться постоянной по ширине или высоте (в зависимости от компоновки панели).

Programatically:

sc.FixedPanel = FixedPanel.Panel1; //Or Panel2 

См:

Splitcontainer, Make a fixed panel

Fixed Panel Height in a SplitContainer

+1

Думаю, я пробовал это, но это не дало мне желаемых результатов. – Tester101

+0

О! Я неправильно задал вопрос: установите FixedPanel на панель, которую вы не хотите менять (это исправляет панель при изменении размера самой формы) и установите IsSplitterFixed в False (давая вам возможность изменить ширину панели). Сохраните ширину фиксированной панели при построении, а затем всякий раз, когда SplitterMoved срабатывает, если (. ! = <Правильный размер>), вы можете отрегулировать размер формы на основе непостоянного размера панели и фиксированного размера требуемый размер панели. Наконец, переместите разделитель снова, и на этот раз (поскольку у вас есть if), он не изменит его снова. – Crisfole

+0

Хотя пользовательский контейнер может быть таким же простым! ;) – Crisfole

0

Вы не можете установить свойство высоты панели в SplitContainer; но вы можете захватить событие Resize в форме и установить splitterDistance. SplitContainer отрегулирует для вас другую панель. Это часть кода из моей работы ниже, и она успешно заставила Panel1 оставаться в том же размере, когда размер формы изменяется. Надеюсь, что это не помогает

Private Sub frmApp_Resize (ByVal отправитель Как System.Object, ByVal е Как System.EventArgs) Ручки MyBase.Resize Me.SplitContainer1.SplitterDistance = 140 End Sub

+1

Вопрос задан для обсуждения: при перемещении SPLITTER форма должна быть изменена ... –

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