【问题标题】:panel scrolling programmable面板滚动可编程
【发布时间】:2011-12-19 05:59:32
【问题描述】:

大家好,我想在 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)

【问题讨论】:

    标签: vb.net scrollbar panel


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复,但该代码似乎根本没有移动面板? 使用此代码更新了 OP
    • 好吧,当我测试它时它滚动了我的面板。 AutoScroll = true,AutoScrollMinSize = {1000, 0}。当然我不知道你的面板是什么样子的。不要保密。
    • 知道了。正如您在上一篇文章中所说,我遗漏了 AutoScrollMinSize 的大小。现在所有动作。 :o) 谢谢,汉斯
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-08-29
      • 2012-12-01
      • 2016-04-29
      • 2013-07-19
      • 2017-05-05
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多