программируемая прокрутка панели - PullRequest
0 голосов
/ 01 ноября 2011

Привет всем, я пытаюсь контролировать горизонтальную прокрутку панели панели в vb.net.Проблема в том, что я могу только немного подвинуть его, используя следующий код:

Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
    panSS.HorizontalScroll.Value = HScrollBar1.Value
End Sub

Ширина форм равна 800, а сама панель растягивается на 1000+ (но отображаются только 800 пикселей).Я просто не знаю, как использовать HScrollBar для его перемещения, как если бы у меня была функция автопрокрутки.

Любая помощь была бы отличной.

Спасибо!

Дэвид

обновление

Также попытался сделать это, и панель не будет двигаться вообще:

Dim range = HScrollBar1.Maximum - HScrollBar1.LargeChange + HScrollBar1.SmallChange
Dim panelPos = (panSS.AutoScrollMinSize.Width - panSS.Width) * e.NewValue / range

    panSS.AutoScrollPosition = New Point(panelPos, 0)

Ответы [ 2 ]

3 голосов
/ 01 ноября 2011

Да, не работает, потому что диапазон прокрутки панели намного больше, чем у вашей полосы прокрутки.Вы можете исправить это, установив значение HScrollBar.Maximum, равное ширине прокрутки панели.Или используйте этот код, он работает независимо от диапазонов прокрутки:

Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As ScrollEventArgs) Handles HScrollBar1.Scroll
    Dim range = HScrollBar1.Maximum - HScrollBar1.LargeChange + HScrollBar1.SmallChange
    Dim panelPos = (Panel1.AutoScrollMinSize.Width - Panel1.Width) * e.NewValue / range
    Panel1.AutoScrollPosition = New Point(panelPos, 0)
End Sub
1 голос
/ 01 ноября 2011

Я бы установил для свойства AutoScroll панели значение True.Оставьте ширину панели до 800, но при добавлении контента еще шире появится встроенная полоса прокрутки и вы сможете управлять прокруткой.

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