Полосы прокрутки .Net Compact Framework - горизонтальные всегда показывают, когда вертикальные показывают - PullRequest
3 голосов
/ 28 августа 2008

Я новичок в .Net Compact Framework и не смог найти ответ через Google. Удушье! Да, это правда, но это одна из причин, почему StackOverflow здесь, верно?

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

Это «особенность», которая неизбежна? У кого-нибудь есть опыт в этой области?

Ответы [ 3 ]

2 голосов
/ 28 августа 2008

Поместите элементы управления на панель или аналог, а затем уменьшите ширину панели на размер вертикальной полосы прокрутки. Это означает, что при появлении вертикальной полосы прокрутки ей больше не потребуется горизонтальная полоса прокрутки, чтобы компенсировать потерянную ширину, которую заняла вертикальная полоса прокрутки.

2 голосов
/ 26 октября 2008

Вам необходимо использовать атрибут Anchor на элементах управления.
Установите элемент управления на якорь сверху, слева и справа.

Когда для формы требуется вертикальная полоса прокрутки, элементы управления изменят размер вместо использования горизонтальной полосы прокрутки.

Также вам может быть проще поместить все элементы управления в Panel. Сделайте Panel первым элементом управления, добавленным в форму.
Сделайте панель такой же большой, как форма, или ниже, чем нижняя часть формы, если вам нужно больше места.
Установите якорь сверху, слева, справа. Установите автопрокрутку на true. В форме выключите автопрокрутку.

Теперь поместите элементы управления в панель. Вам все еще нужно установить опорные точки на каждом из ваших элементов управления, иначе ваш элемент управления Panel будет использовать горизонтальную полосу прокрутки и сделает все упражнение бессмысленным.
Это хороший метод, когда вам нужно использовать SIP (Soft Input Panel), так как атрибут высоты панелей может быть изменен, когда атрибут SIP.Enabled изменяется и предотвращает скрытие некоторых элементов управления SIP - это раздражает необходимость писать текст в текстовом поле, которое вы не видите.
При необходимости на панели появится полоса прокрутки.

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

0 голосов
/ 28 августа 2008

Да - у меня есть опыт с этим - к сожалению, он ничем не отличается от вашего. Я обычно избегал прокрутки форм и использовал пейджинг везде, где это возможно, на .Net CF. Если это вариант для вас, я бы порекомендовал его.

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

...