我可以直接从.net中的HScrollBar获取事件吗?

时间:2011-11-08 20:38:38

标签: .net scrollbar

我有一个奇怪的要求。我们的数据有时间相关的刻度。每个刻度可以包含0到50个数据点。我想要在滚动条上布置刻度线,因此如果您拖动手柄,则滚动刻度线。但我希望箭头在数据点之间切换,这样如果您使用其中一个箭头单步执行,您将看到每个数据点。

我是否可以直接从HScrollBar获取事件,以便我知道用户是单击箭头还是拖动手柄?

2 个答案:

答案 0 :(得分:2)

您确实可以直接使用HScrollBarVScrollBar,但它并没有按照您所说的方式提供您的位置。您可以设置用户点击箭头时移动的空间量(可能是SmallIncrementSmallDecrement),以及当用户点击滚动区域时LargeIncrement和{{ 1}})。但是,当用户拖动拇指时,您无法设置它移动的空间量。

当用户停止拖动时(通过舍入结果位置),您可能会移动滚动条位置,但这可能会使用户感到困惑。查看LargeDecrement事件和HScrollBar.Scroll属性。

最好使用ScrollEventArgs.Type并在UI中添加左右箭头按钮。按照你想要的方式进行TrackBar工作会很困难,而且可能看起来不像HScrollBar那么好。

答案 1 :(得分:1)

ScrollBar不适用于此。首先,范围基于最小值到最大值,然后由LargeChange值偏移。换句话说,ScrollBar不会从最小值滚动到最大值(就像在VB6中一样)。

尝试使用TrackBar控件。你不会得到箭头,只是一个手柄,但它几乎可以为你提供所需的一切。