为什么Trackbar值在箭头向上/ PgUp时减少?

时间:2013-02-12 11:39:58

标签: c# winforms

我在Trackbar Winforms控件中偶然发现了一个有趣的行为。

在水平轨道栏上,左/右箭头键按预期工作。 (向左箭头将滑块向左移动并减小值,右箭头则向右移动) 也可以使用向上/向下箭头键和PageUp / PageDown操作滑块。 但是,行为似乎违反直觉:向上箭头和向上翻页将滑块向左移动,从而减小了值。 向下箭头和向下翻页将滑块向右移动并增加值。

使用垂直轨迹栏时,向上/向下键可按预期工作,但左箭头=增加,右箭头=减少。

这是C#Winforms中的默认行为,显然是在本机Windows中。 (不确定后者,UAC的滑块确实以这种方式工作)

在WPF中,滑块控件“正常”工作,即值随着向上箭头,向右箭头和PgUp而增加。 此外,Internet Explorer隐私设置中的滑块也能正常工作。不知道为什么,但我怀疑是按键的自定义处理。

从人机工程学的角度来看,很明显,任何东西的向上,向右,向前和顺时针操纵都应该增加价值。 (这没什么新鲜的,比较A Guide to Human Factors and Ergonomics, Second Edition Page 100

现在我的问题:有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:1)

我非常倾向于认为选择此行为是为了使轨迹栏控件与滚动条控件保持一致。

这两个控件有很多共同之处(它们的拇指可以通过“线”或“页面”增量移动,两个控件都可以水平或垂直布局,都使用WM_HSCROLLWM_VSCROLL在拇指位置改变时通知他们的父母。)

从控件的角度来看,拇指可以“向上”或“向下”(分别为“向左”或“向右”)移动。滚动条的键盘导航使用 Left Up 进行向上(向左)移动,以及 Right Down 向下(向右)运动。

轨道栏控件必须遵循相同的约定,因此开发人员习惯使用滚动条控件的实现可以将相同的原则应用于轨迹栏控件。