Элементы управления автоматическим размером в .NET CF, чтобы избежать горизонтальной прокрутки?

Я разрабатываю форму в .NET Compact Framework, в которой размещается переменное количество элементов управления. Каждый элемент управления должен иметь ту же ширину, что и форма. Когда есть только несколько элементов управления, вертикальная полоса прокрутки не появляется. Когда элементов управления больше, чем они могут поместиться в одной форме, появляется вертикальная полоса прокрутки. Затем следует изменить ширину элементов управления, чтобы горизонтальная полоса прокрутки не отображалась.

Каков наилучший способ добиться этого? Меня интересует решение, которое будет работать на всех платформах/размерах экрана и которое может поддерживать изменение ориентации экрана.


person kgiannakakis    schedule 29.01.2009    source источник


Ответы (3)


Если я правильно понимаю, в какой-то момент появляются как вертикальная, так и горизонтальная полосы прокрутки, а вам нужна только вертикальная полоса прокрутки? Разве установка привязки каждого элемента управления на «Верх | Слева | Справа» не решает эту проблему автоматически?

person Martin Plante    schedule 30.01.2009

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

person PhilChuang    schedule 03.02.2009

Я провел небольшое тестирование, и кажется, что когда вы добавляете элементы управления, панель вызывает событие изменения размера, когда добавленный элемент управления активирует полосы прокрутки, чтобы они стали видимыми. Раздражает то, что событие изменения размера запускается пару раз во время запуска :( Но, зная компактную структуру, это может быть вашим лучшим способом справиться с этим.

Обычно в полной структуре вы могли бы, если DisplayRectangle больше, чем размер панели, но такого не существует в cf.

Надеюсь, это чем-то поможет, я посмотрю, смогу ли я найти что-нибудь еще утром.

person Stormenet    schedule 29.01.2009