Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: StealthRTОтветов: 2

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

scrollbarpanel

Ответы

Ответ 1 · рейтинг 3 · Hans Passant

Да, не работает, потому что диапазон прокрутки панели намного больше, чем у вашей полосы прокрутки. Вы можете исправить это, установив значение 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

Ответ 2 · рейтинг 1 · ileff

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы