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

C# 为什么向上箭头/PgUp时轨迹栏值会减小?,c#,winforms,C#,Winforms,我在Trackbar Winforms控件中偶然发现了一个有趣的行为 在水平轨迹栏上,左/右箭头键按预期工作。(左箭头向左移动滑块并减小值,右箭头则相反) 还可以使用上/下箭头键和PageUp/PageDown操作滑块。 但是,这种行为似乎违反直觉:向上箭头和向上翻页将滑块向左移动,从而减小值。 向下箭头和向下翻页向右移动滑块并增加值 使用垂直轨迹栏时,上/下键按预期工作,但箭头左=增加,箭头右=减少 这是C#Winforms中的默认行为,显然在本机Windows中也是如此。(对于后者不确定,U

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

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

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

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

在WPF中,滑块控制“正常”工作,即值随向上箭头、向右箭头和向上箭头而增加。 Internet Explorer隐私设置中的滑块也可以正常工作。不知道为什么,但我怀疑钥匙是定制的

从人体工程学的角度来看,很明显,向上、向右、向前和顺时针操纵任何东西都会增加价值。(相比之下,这并不是什么新鲜事)


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

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

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

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


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

事实上,滚动栏具有相同的行为。但问题是为什么滚动条是这样实现的——特别是当按下上/下键时水平滚动条会移动——而大多数滚动条甚至不接受焦点。(焦点转到相关控件)@DasKrümelmonster,实际上您可以创建独立的滚动条(不绑定到窗口的视口),这些滚动条在创建轨迹条控件之前用作轨迹条。我猜为水平和垂直布局模式实现所有导航键更为一致(替代方案是根据布局模式拒绝某些按键)。我认为根本原因是这样的:西方世界正在自上而下阅读ltr。因此,“读取进度”从顶部的0开始,向下滚动时增加。然后将其转到垂直滚动条。不过,轨迹栏的按键应该已经更改了。。。