嘿所有我试图控制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)
答案 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,但是当您添加更宽的内容时,会出现内置滚动条并管理滚动。