【问题标题】:How to move scroll bar value by percentage in Winforms?如何在 Winforms 中按百分比移动滚动条值?
【发布时间】:2017-02-18 19:53:38
【问题描述】:

我不确定这是否是重复的问题,但我在 StackOverflow 上找不到任何答案。

问题说明:我有第三方图像查看器和 PDF 查看器控件。嵌入到 C# WinForms 页面中。我想以百分比控制滚动条的移动。例如,如果我按下“向下”键,那么垂直滚动条应该向下移动到页面高度的 20%。我尝试过以下逻辑:

_imageViewer.VerticalScrollBar.Value += _imageHeight X ZoomFactor X .20
OR
_imageViewer.VerticalScrollBar.Value += pdfViewer1.VerticalScroll.Maximum X .20

这两种方法都没有给我确切的结果。我认为我还应该考虑滚动条的拇指大小,但我不知道如何获得该值。

请建议我以图像高度或宽度的百分比移动滚动条的任何好方法。

【问题讨论】:

  • 滚动条有一个毛茸茸的可用性问题。造成拇指有一个非零大小。如果它一直向上滚动,那么您会考虑拇指的顶部来指示位置。如果一直向下滚动,则拇指的底部是相关的。那么究竟什么时候从上到下切换呢?没有标准答案。最好的办法是考虑滚动条的范围减去拇指大小来确定位置,这样你永远不会达到 100%。拇指的大小应等于页面大小。

标签: c# winforms


【解决方案1】:

您可以将ScrollBarSmallChange 属性分配给合适的值。如文档中所述,当用户按下箭头键之一或单击滚动条按钮之一时,Value 属性会根据SmallChange 属性中设置的值发生变化。 p>

示例:

vScrollBar1.SmallChange = ((vScrollBar1.Maximum - vScrollBar1.Minimum) * 20 / 100);

【讨论】:

  • 设置Minimum = 0Maximum = imageHeight,然后像我一样设置SmallChange,你可以在每次点击向上/向下箭头时滚动20%
  • 它对我不起作用。图像的高度 = 615,缩放 = 1.32,垂直滚动条。最大值自动设置,我发现它是 1087。它没有设置为(图像高度 X 缩放)。您能否分享您的代码,说明它是如何工作的,特别是在放大或缩小图像时。
  • 它使用以下逻辑: VerticalScroll.SmallChange = VerticalScroll.Maximum - VerticalScroll.LargeChange) * 20/100
  • 我看不到LargeChange 与您的要求之间的任何关系(或者我可能无法正确理解这个问题)。我使用的逻辑是分配ImageHeight*20/100。现在您还可以将Zoom 因子应用于公式:ImageHeight*Zoom*20/100
  • 我想我无法正确理解这个问题。滚动条是否属于第 3 方控件?控件是否设置自动滚动?滚动条是否是标准滚动条,您放置在第三方控件附近的表单上?你能详细说明一下这个问题吗?
猜你喜欢
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多