3

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

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

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

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

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

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

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

4

1 回答 1

1

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

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

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

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

于 2013-02-12T12:57:17.087 回答