Winforms 使用左右箭头键选择上一个/下一个菜单而不是下一个/上一个菜单

Winforms 使用左右箭头键选择上一个/下一个菜单而不是下一个/上一个菜单,winforms,menustrip,Winforms,Menustrip,在完整应用程序中注意到,但在简单演示中完全可复制: 我有一个MenuStrip包含三个菜单,a,B,和C。每个菜单都包含三项,A1/A2/…/C2/C3 当我按Alt键时,第一个菜单A被选中。然后我可以使用← 及→ 键选择其他菜单。这是应该的 然而,当我按下↓ 要打开菜单,我仍然可以使用← 及→ 要选择其他菜单,但顺序相反:← 选择下一个菜单,然后→ 前一个 我很难确定我的本地系统是否有问题,这是否是MenuStrip组件中的错误,或者我是否忘记设置必需的属性。这三种情况对我来说都很奇怪,因为在

在完整应用程序中注意到,但在简单演示中完全可复制:

我有一个
MenuStrip
包含三个菜单,
a
B
,和
C
。每个菜单都包含三项,
A1
/
A2
/…/
C2
/
C3

当我按Alt键时,第一个菜单
A
被选中。然后我可以使用← 及→ 键选择其他菜单。这是应该的

然而,当我按下↓ 要打开菜单,我仍然可以使用← 及→ 要选择其他菜单,但顺序相反:← 选择下一个菜单,然后→ 前一个

我很难确定我的本地系统是否有问题,这是否是
MenuStrip
组件中的错误,或者我是否忘记设置必需的属性。这三种情况对我来说都很奇怪,因为在这三种情况下,我都希望有人已经遇到了这个问题,而我甚至找不到其他人问这个问题

如果不清楚我在问什么,下面是一张图片:


在我忘记提及之前,没有相关的代码。此演示应用程序是一个全新的WinForms项目,在其默认窗体中添加了一个
MenuStrip
控件,并且有三个菜单,每个菜单都有三项,我只为每个菜单设置了文本。

这是
MenuStrip
中的一个bug/misfeature

查看
ToolStripDropDown.ProcessArrowKey
带有Reflector的实现显示,根据
系统信息,箭头键会反转。RightAlignedMenus
。那是不对的。它应该取决于菜单条本身的从右到左模式,有时(通常?)可能与
系统信息匹配。RightAlignedMenus
,但不总是,也不在我的系统上

SystemInformation.RightAlignedMenus
是用户可通过控制面板、平板电脑设置、其他、惯用手进行配置的,事实上,如果我将其更改为左手,我可以让菜单正常运行。我的默认和正确设置是右手。由于
MenuStrip
组件在我的系统上根本无法使用键盘,因此我将使用标准的
main菜单
组件替换它


更新:我实际上使用了一个派生控件来提供漂亮的菜单图像。它是基于。一个功能更全面的实现也适用于Windows XP和更早版本(在这种情况下使用所有者绘制的菜单),可在上获得,但这比我需要的更复杂。

我无法复制。B1->在我的表格上转到C1。谢谢检查。我想这可能排除了选项三,因此在
MenuStrip
中留下了本地系统配置/bug的组合。谢谢。我只是在过去的几个小时里对这个问题感到困惑。我不敢相信,一年多以后,这个错误仍然没有被修复。我发现改变这个系统设置(从windows 10开始)的当前方法是赢得+R
explorer shell::{80F3F1D5-FECA-45F3-BC32-752C152E456E}
->“其他”选项卡