2015-06-29 3 views
2

С помощью SplitContainer пользователь может изменять размеры двух сторон элемента управления. Но это ограничивается двумя разделами.Управление Winforms, объединяющее в себе как SplitContainer, так и TableLayoutPanel

С помощью TableLayoutPanel у вас есть неограниченные строки и столбцы. К сожалению, пользователь не может перетаскивать любой из этих разделов.

Как я могу получить лучшее из обоих миров; «draggable-ness» среднего бара в SplitContainer и возможность иметь больше, чем 2x1 разделов, чем позволяет TableLayoutPanel?

Если Winforms не позволит это, возможно, есть коммерческий компонент? Я знаю, что я видел этот расширенный контроль в некоторых не.NET-программах.

ответ

2

Вставить еще один SplitContainer в одну половину первого.

Помните, что вы можете разделить горизонтальные и вертикальные. Я уверен, что многие из аккуратных макетов могут быть сгенерированы таким образом.

+0

Это кажется почти слишком легко. Я попробую и вернусь к тебе. –

+0

должен работать, как я это делаю. – Wolf5

+0

Ну, это было быстро. Я не думаю, что пока не могу найти недостатка. Красиво сделано. Теперь просто вопрос, следует ли мне разместить два горизонтальных SplitContainers внутри вертикального или двух вертикальных SplitContainers внутри горизонтали, но это моя проблема :) –

0

здание на вершине @Brody's solution:

После внедрения другого SplitContainer (ов), единственный недостаток, как уже упоминалось @ Wolf5 является то, что они не могут автоматически изменять размеры вместе, так что вы быстро теряют вид табличный. Решение может быть создан обработчик с SplitterMoved событий для каждого применимого SplitContainer:

private void mySplitContainer_SplitterMoved(object sender, SplitterEventArgs e) { 
    mOtherySplitContainer.SplitterDistance = e.SplitX; 
} 

Если SplitContainer горизонтально использование e.SplitX, если это вертикальное использование e.SplitY.


Предложенное дубликатом этого другой вопрос: Resizable table layout panel in c#

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