Возможно ли, чтобы элементы управления WinForm (Panel и т. Д.) Росли как элементы управления веб-формы? - PullRequest
1 голос
/ 29 июля 2010

Я конвертирую приложение из ASP.NET WebForms в WinForms. Есть одна страница asp.net, которая содержит ListView / Repeater, который содержит несколько пользовательских элементов управления, которые в свою очередь содержат ListView с другими пользовательскими элементами управления. По сути, макет выглядит как TreeView, но на каждом узле / листе есть несколько элементов управления, таких как комбинированные списки и т. Д.

Когда это в ASP.NET, страница автоматически раскладывается, поэтому она имеет высоту в несколько экранов - если я добавлю 20 кнопок в Panel, она будет расти, и браузер получит полосы прокрутки.

Я бы хотел сделать то же самое в приложении WinForms - поэтому у меня будет пользовательский элемент управления, который будет содержать множество элементов управления в некотором варианте Panel (Flow, Table layout), и элементы управления могут иметь другие элементы управления внутри них и т. д.

Проблема в том, что когда я создаю приложение winforms, каждый элемент управления имеет определенную высоту во время разработки. Мне бы хотелось, чтобы некоторые пользовательские элементы управления могли расти вместе с их содержимым, чтобы они складывались. В основной форме должна быть вертикальная полоса прокрутки, как в веб-браузере, когда сгенерированная страница выше экрана.

Я просто хотел бы получить общие указатели в правильном направлении. Спасибо.

Ответы [ 4 ]

5 голосов
/ 29 июля 2010

Использование Anchor и Dock свойств контейнера.

2 голосов
/ 29 июля 2010

Да, чтобы изложить на Якорь и Док ... попробуйте это

- Поместите панель в пустую форму и установите для ее свойства закрепления значение Top

.

- поместите текстовое поле на панель и закрепите его до полного ... оно должно заполнить всю верхнюю панель

- Поместите разделитель в форму, и, если он еще не закреплен правильно, установите его закрепление на вершину

- поместите другую панель под сплиттер и установите для Dock значение Fill

- поместите еще одно текстовое поле внутри нижней панели и заполните его также

Теперь у вас есть форма с двумя надёжными текстовыми полями, и размер формы изменится, когда она появится.

* вам может потребоваться установить для свойства текстового поля MultiLine значение true, но не уверен.

Надеюсь, это поможет.

1 голос
/ 29 июля 2010

Привязать элементы управления к родителю.Закрепление всех четырех сторон приведет к растяжению.

0 голосов
/ 29 июля 2010

Если ответы «Привязка» и «Пристыковка» у вас не работают, есть другой вариант.Это не красиво, но вы можете получить доступ к свойствам элемента управления и динамически изменять их во время выполнения.Вы бы сделали что-то вроде: if(listBox.Items.Count > [yourVal]) listBox.height = [yourFormula] или что-то еще.

Прошло много времени с тех пор, как я заполнил форму для выигрыша (и в данный момент у меня не запускается IDE), но яЯ уверен, что есть даже ScrollPanel или другой элемент управления прокруткой, который вы можете установить в своей форме.

Тем не менее, когда вы работаете с WinForms, чем меньше прокрутки вы можете заставить делать, тем лучше.

...