программируемая прокрутка панели

Привет всем, я пытаюсь управлять горизонтальной прокруткой панели панели в 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)

person StealthRT    schedule 01.11.2011    source источник


Ответы (2)


Да, не работает, потому что диапазон прокрутки панели намного больше, чем у вашей полосы прокрутки. Вы можете исправить это, установив значение 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
person Hans Passant    schedule 01.11.2011
comment
Спасибо за ответ, но этот код, кажется, вообще не перемещает панель? обновил OP этим кодом - person StealthRT; 01.11.2011
comment
Ну, он прокручивал мою панель, когда я тестировал его. AutoScroll = true, AutoScrollMinSize = {1000, 0}. Конечно, я не знаю, как выглядит ваша панель. Не держите это в секрете. - person Hans Passant; 01.11.2011
comment
Понятно. Я не указал размер AutoScrollMinSize, как вы указали в своем последнем сообщении. Все движется сейчас. :о) Спасибо, Ганс - person StealthRT; 01.11.2011

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

person ileff    schedule 01.11.2011