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

在水平轨迹栏上,向左/向右箭头键可以正常工作。 (左箭头将滑块向左移动并减小该值,右箭头则相反)
也可以使用向上/向下箭头键和PageUp / PageDown来操纵滑块。
但是,此行为似乎违反直觉:向上箭头和向上一页将滑块向左移动,因此减小了该值。
向下箭头和向下翻页可将滑块向右移动并增加值。

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

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

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

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

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

最佳答案

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

这两个控件有很多共同点(它们的拇指可以按“行”或“页面”的增量移动,两个控件都可以水平或垂直放置,当拇指使用时都使用WM_HSCROLLWM_VSCROLL通知其父对象)位置变化)。

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

跟踪栏控件必须遵循相同的约定,这很有意义,因此习惯于滚动条控件实现的开发人员可以将相同的原理应用于跟踪栏控件。

关于c# - 为什么在向上箭头/PgUp上轨迹栏值会减小?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14831694/

10-14 16:38