2011-11-01 68 views
0

嘿,我試圖控制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) 

回答

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 
+0

感謝您的回覆,但代碼似乎並沒有移動面板? **用此代碼更新了OP ** – StealthRT

+0

嗯,當我測試它時,它會滾動我的面板。 AutoScroll = true,AutoScrollMinSize = {1000,0}。當然,我不知道你的面板是什麼樣子。不要保守祕密。 –

+0

明白了。正如您在上一篇文章中所述,我忽略了AutoScrollMinSize的大小。現在所有的動作。 :o)謝謝,漢斯 – StealthRT

1

我會在面板的AutoScroll屬性設置爲True。將面板寬度保留爲800,但是當您將內容添加得更寬時,將出現內置滾動條並管理滾動。