面板滚动可编程

时间:2011-11-01 05:20:27

标签: vb.net scrollbar panel

嘿所有我试图控制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+(但仅显示800px)。我只是不知道如何使用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 个答案:

答案 0 :(得分:3)

是的,不起作用,因为面板的滚动范围比滚动条大得多。您可以通过将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 :(得分:1)

我将面板的AutoScroll属性设置为True。将面板宽度保留为800,但是当您添加更宽的内容时,会出现内置滚动条并管理滚动。