为什么轨迹栏值在箭头向上/PgUp时会减小

本文关键字:PgUp 轨迹 为什么 | 更新日期: 2023-09-27 17:58:58

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

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

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

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

在WPF中,滑块控制"正常"工作,即值随着向上箭头、向右箭头和PgUp而增加。此外,Internet Explorer隐私设置中的滑块工作正常。不知道为什么,但我怀疑是对钥匙的定制处理。

从人体工程学的角度来看,很明显,向上、向右、向前和顺时针操作任何东西都应该增加价值。(这并不是什么新鲜事,比较《人为因素和人体工程学指南》,第二版,第100页)

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

为什么轨迹栏值在箭头向上/PgUp时会减小

我强烈倾向于认为选择这种行为是为了保持轨迹条控件与滚动条控件的一致性。

这两个控件有很多共同点(它们的拇指可以按"行"或"页"的增量移动,两个控件都可以水平或垂直排列,当拇指位置发生变化时,都使用WM_HSCROLL和WM_VSCROLL通知其父控件)。

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

轨迹条控件遵循相同的约定一定是有意义的,所以习惯了滚动条控件实现的开发人员可以将相同的原理应用于轨迹条控件。