获取左右箭头键选择上一个/下一个菜单而不是下一个/上一个菜单

3 menustrip winforms

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

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

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

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

我无法弄清楚我的本地系统是否有问题,如果这是MenuStrip组件中的错误,或者我忘记设置所需的属性.这三个对我来说都很奇怪,因为在所有这三种情况下我都会发现有人已经遇到过这个问题,我甚至找不到其他人问这个问题.

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

菜单条问题http://i42.tinypic.com/25uis8m.png

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

小智 5

这是一个错误/错误MenuStrip.

ToolStripDropDown.ProcessArrowKey使用Reflector 查看实现显示箭头键取决于SystemInformation.RightAlignedMenus.那是不对的.它应该取决于菜单条本身的从右到左模式,有时(通常?)匹配SystemInformation.RightAlignedMenus,但不总是,而不是在我的系统上.

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

更新:我实际上使用派生控件来提供漂亮的菜单图像.它基于"Visual Style Menus"的Microsoft示例.一个功能更全面的实现也适用于Windows XP和之前(在这种情况下使用所有者绘制的菜单)可以在带有C#中的图标的Vista菜单中找到,但这比我需要的更复杂.