【问题标题】:Change the size of scrollbar in winforms在winforms中更改滚动条的大小
【发布时间】:2011-07-27 08:12:02
【问题描述】:

我想在 winforms 中更改滚动条的实际条/拇指部分的大小,但我找不到这样做的方法。无论要滚动多少,拇指大约是实际滚动区域的 1/10。无论我必须向下滚动 1 行还是 1000 行,都是一样的。我希望它的大小可以根据要滚动的量来调整,或者至少使其达到滚动区域大小的 50%。

【问题讨论】:

    标签: c# winforms scrollbar


    【解决方案1】:

    from包含一些调整滚动的属性如:AutoScrollMargin, AutoScrollMinSize, AutoScrollOffset,另外还有HorizontalScrollVerticalScroll,最后两个属性分别代表窗体的垂直和水平滚动条,它们也暴露了一些像Minimum, Maximum, SmallChange, LargeChange, Value.. 这样的属性,如果使用所有这些都不能满足您的要求,那么您应该使用自定义Scrollbar。将ScrollBar 添加到表单并禁用表单滚动条,并在向表单添加控件或更改其大小时调整自定义滚动条...

    【讨论】:

    • 除非永远不要使用自定义滚动条。正确配置后,一切都会按预期进行。
    • 我不想调整滚动,我只想改变条的长度。您拖动以滚动的部分。我想更改实际的 vScrollBar 控件msdn.microsoft.com/en-us/library/…
    • @Jack:就是这样,你不能直接访问底层bar,表单只暴露了VertiaclScroll属性,但是它的类型是VScrollProperties而不是VScrollBar! .因此,如果 VScrollProperties 的预定义属性和其他表单属性无法帮助您。那么你别无选择,只能使用自定义滚动条。
    • 但我确实可以直接访问 ScrollBar 控件。我正在使用来自codeproject.com/KB/graphics/YLScsImagePanel.aspx 的自定义控件,它由一个面板和一个hScrollbar/vScrollbar 组成。 VScrollBar 和 HScrollBar 从 ScrollBar 继承,所以如果它适用于 ScrollBar,它应该适用于那些。这就是为什么我说我想改变实际的 vScrollBar 控件来做到这一点,但我不知道怎么做。
    • 其实我明白了。 this.vScrollBar1.LargeChange = this.vScrollBar1.Maximum / 2; 将拇指更改为轨道长度的一半。
    【解决方案2】:

    其实我明白了。 this.vScrollBar1.LargeChange = this.vScrollBar1.Maximum / 2; 将拇指更改为轨道长度的一半。

    【讨论】:

      【解决方案3】:

      滚动条控件的拇指条大小与该控件的ScrollBarName.MaximumScrollBarName.LargeChange 值之间的差异成正比。

      要使用ScrollBarName.LargeChangeScrollBarName.Maximum 需要一个比例偏移值,以便滚动条控件在使用时按预期运行。以下示例演示了如何进行这种偏移计算以及如何将其应用于实际应用环境中。

      偏移量计算:

      ScrollBarName.Maximum = MyMaximum + MyLargeChange - 1 ' LargeChange Usage Offset Calcualtion
      

      应用程序上下文:

      '*** Using Simplified Values To Avoid Confusion ***
      
      Dim ScrollBarName As New VScrollBar ' Or HScrollBar Control
      Dim MyMaximum As Integer = 100 ' Your "off screen" calculated value
      Dim MySmallChange As Integer = 10 ' MySmallChange <= MyLargeChange <= MyMaximum
      Dim MyLargeChange As Integer = 50 ' MyLargeChange <= MyMaximum (Example produces thumbar sized {(MyLargeChange / ScrollBarName.Maximum) %} Clientsize.width
      Me.controls.add(ScrollBarName) ' Add Your Control
      ScrollBarName.Dock = DockStyle.Right ' Dock bottom for HScrollBar
      
      ScrollBarName.SmallChange = MySmallChange
      ScrollBarName.LargeChange = MyLargeChange
      ScrollBarName.Maximum = MyMaximum + MyLargeChange - 1 ' LargeChange Usage Offset Calcualtion
      ScrollBarName.Value = 20 ' The scrollBar movement value whereby ScrollBarName.Value <= MyMaximum
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-22
        • 2014-09-14
        • 1970-01-01
        • 2014-12-17
        • 1970-01-01
        • 2012-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多