检测轨道栏中的跳转

时间:2017-02-17 13:43:04

标签: c# winforms

我试图检测用户是否没有直接点击滑块,而是在轨道栏上的某个位置使滑块值跳过LargeChange属性。我试图在跳转发生之前获取滑块所在的值。因此,例如,如果滑块位于值40并且用户将其跳转到140,我需要知道它在更改之前的初始值。

我知道我可以使用变量来跟踪以前的值,但是我有很多TrackBars所以我最终会遇到很多我想避免的变量。

TrackBar是否有某种事件可用于检测跳转或在用户更改之前获取初始值?现在,我正在使用MouseDown事件,但这给了我点击TrackBar而不是它所在位置的价值。

谈论这个TrackBar(滑块是你可以向左和向右移动的东西):

enter image description here

2 个答案:

答案 0 :(得分:3)

跳出来的解决方案是使用字典。您不希望拥有许多变量,但字典只是一个变量。我不相信你有这么多的轨道栏,字典的内存应该是任何问题。

请在Form类中声明成员

private readonly Dictionary<TrackBar, int> trackBarValue = new Dictionary<TrackBar, int>();

ValueChanged的{​​{1}}事件的处理程序中,您可以执行

TrackBar

我不知道您目前是否为每个单独的轨道栏都有不同的处理程序。由于这意味着在每个处理程序中重复该代码,因此将这个单一处理程序添加到所有轨道栏的事件中可能是个好主意。

答案 1 :(得分:1)

有关变量更改时如何执行代码,请参阅here

尝试类似的东西,但是将代码设置为类似于OldVar的TrackVar2,TrackVar2是TrackBar1的值(您的实际轨道栏int),但只在OldVar首先更新后才更新它。

这应该会给你你想要的东西,有可能是更好的解决方案,但这应该有效。