【问题标题】:Getting the Left and Right arrow keys to select the previous/next menu instead of the next/previous menu使用左右箭头键选择上一个/下一个菜单而不是下一个/上一个菜单
【发布时间】:2019-09-03 03:31:53
【问题描述】:

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

我有一个 MenuStrip 包含三个菜单,ABC。这些菜单中的每一个都包含三个项目,A1/A2/.../C2/C3

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

但是,当我按打开一个菜单时,我仍然可以使用选择其他菜单,但是顺序反转: 选择下一个菜单, 上一个。

我无法确定我的本地系统是否有问题,这是否是 MenuStrip 组件中的错误,或者我是否忘记设置必需的属性。这三个对我来说似乎都很奇怪,因为在这三个案例中,我都希望有人已经遇到过这个问题,我什至找不到其他人问这个问题。

如果不清楚我在问什么,这里有一张图片:

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

【问题讨论】:

  • 我无法重现。 B1 -> 在我的表单上转到 C1。
  • 感谢您的检查。我想这可能排除了选项三,因此在MenuStrip 中留下了本地系统配置/错误的组合。

标签: winforms menustrip


【解决方案1】:

这是MenuStrip 中的错误/错误功能。

查看使用 Reflector 的 ToolStripDropDown.ProcessArrowKey 实现表明,箭头键会根据 SystemInformation.RightAlignedMenus 反转。那是不对的。它应该取决于菜单条本身的从右到左模式,这有时可能(通常?)匹配SystemInformation.RightAlignedMenus,但并非总是如此,而且不在我的系统上。

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

更新:我实际上是使用派生控件来提供漂亮的菜单图像。它基于the Microsoft sample on "Visual Style Menus"Vista Menu with Icons in C# 提供了一个功能更全面的实现,它也适用于 Windows XP 和更早版本(在这种情况下使用所有者绘制的菜单),但这对我来说比必要的复杂。

【讨论】:

  • 谢谢你。我刚刚花了最后几个小时来解决这个问题。不敢相信,一年多过去了,这个bug还没有修复。
  • 我发现更改此系统设置的当前方法(从 Windows 10 开始)是 Win+R explorer shell:::{80F3F1D5-FECA-45F3-BC32-752C152E456E} -> 'Other' 选项卡
猜你喜欢
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多