我有一个奇怪的要求。我们的数据有时间相关的刻度。每个刻度可以包含0到50个数据点。我想要在滚动条上布置刻度线,因此如果您拖动手柄,则滚动刻度线。但我希望箭头在数据点之间切换,这样如果您使用其中一个箭头单步执行,您将看到每个数据点。
我是否可以直接从HScrollBar获取事件,以便我知道用户是单击箭头还是拖动手柄?
答案 0 :(得分:2)
您确实可以直接使用HScrollBar
和VScrollBar
,但它并没有按照您所说的方式提供您的位置。您可以设置用户点击箭头时移动的空间量(可能是SmallIncrement
和SmallDecrement
),以及当用户点击滚动区域时LargeIncrement
和{{ 1}})。但是,当用户拖动拇指时,您无法设置它移动的空间量。
当用户停止拖动时(通过舍入结果位置),您可能会移动滚动条位置,但这可能会使用户感到困惑。查看LargeDecrement
事件和HScrollBar.Scroll
属性。
最好使用ScrollEventArgs.Type
并在UI中添加左右箭头按钮。按照你想要的方式进行TrackBar
工作会很困难,而且可能看起来不像HScrollBar
那么好。
答案 1 :(得分:1)
ScrollBar不适用于此。首先,范围基于最小值到最大值,然后由LargeChange值偏移。换句话说,ScrollBar不会从最小值滚动到最大值(就像在VB6中一样)。
尝试使用TrackBar控件。你不会得到箭头,只是一个手柄,但它几乎可以为你提供所需的一切。