Панель прокрутки WinForm без полосы прокрутки? - PullRequest
4 голосов
/ 25 августа 2009

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

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

Я возился со свойствами VerticalScrollbar, и ни одно из них, похоже, ничего не делает. Я заметил, что если я установил AutoScroll в false, AutoScrollPosition фактически показывает координаты, за исключением отрицательных значений. Кроме того, я заметил, что panel.VerticalScrollbar.Visible = true; только кажется, что работает, когда находится вне конструктора. Есть ли причина для этого?

По сути, полосы прокрутки в WinForms меня очень смущают (глючит?). Кто-нибудь знает хороший способ прокрутки панели вверх и вниз программно с помощью кнопок (мне все равно, нужна ли мне невидимая полоса прокрутки).

Спасибо! = D

1 Ответ

5 голосов
/ 25 августа 2009

Сделайте ваш UserControl обычным UserControl (т.е. наследуйте от UserControl вместо Panel) и поместите Panel в свой UserControl. Поместите любой контент / элементы управления на внутреннюю панель, а затем измените свойства панели слева и сверху, чтобы перемещать ее без полос прокрутки. Вы также можете добавить кнопки в свой UserControl для управления перемещением внутренней панели.

Однако более простой способ может заключаться в том, чтобы просто использовать действительно широкие / высокие полосы прокрутки и установить для их Thumbwidth (я думаю, что это свойство) одинаковое большое значение - это даст полосы прокрутки, которые легко использовать пальцами. , Насколько мне известно, нет способа сделать это с полосами прокрутки, которые появляются на панели с автопрокруткой, установленной в True, поэтому вам все равно придется использовать метод, который я упоминал выше (с внутренней панелью, расположенной на вашем UserControl) и добавить полосы прокрутки переместить его самостоятельно.

Я согласен, что полосы прокрутки в Windows - отстой, поэтому, хотя я обычно выступаю за то, чтобы просто использовать стандартные элементы управления, к которым привыкли все, я не вижу ничего плохого в том, чтобы сворачивать свои собственные в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...