在完整的应用程序中注意到,但在简单的演示中可以完全重现:
我有一个MenuStrip
包含三个菜单,A
, B
, and C
。每个菜单包含三个项目,A1
/A2
/.../C2
/C3
.
When I press Alt, the first menu A
becomes selected. I can then use the ← and → keys to select other menus. That is as it should be.
However, when I press ↓ to open a menu, I can still use ← and → to select other menus, but the order is reversed: ← selects the next menu, and → the previous.
我无法确定我的本地系统是否有问题,是否是本地系统中的错误MenuStrip
组件,或者如果我忘记设置必需的属性。这三种情况对我来说都很奇怪,因为在这三种情况下我都期望someone已经遇到这个问题了,我什至找不到其他人询问这个问题。
如果不清楚我在问什么,这是一张图片:
在我忘记提及之前,有no相关代码。该演示应用程序是一个全新的 WinForms 项目,有一个MenuStrip
控件添加到其默认表单,并且具有三个菜单,每个菜单包含三个项目,对于每个菜单,我只设置了文本。
这是一个错误/错误功能MenuStrip
.
看着ToolStripDropDown.ProcessArrowKey
使用 Reflector 的实现表明箭头键会根据情况而反转SystemInformation.RightAlignedMenus
。那是不对的。它should取决于菜单条本身的从右到左模式,有时(通常?)可能匹配SystemInformation.RightAlignedMenus
,但并非总是如此,而且不在我的系统上。
SystemInformation.RightAlignedMenus
用户可以通过“控制面板”、“平板电脑设置”、“其他”、“惯用手”进行配置,事实上,如果我将其更改为“左撇子”,菜单就会正常运行。对我来说,默认且正确的设置是右手。自从MenuStrip
组件在我的系统上根本无法通过键盘使用,我将用标准替换它的使用MainMenu
成分。
Update:我实际上使用派生控件来提供漂亮的菜单图像。它是基于“视觉样式菜单”的 Microsoft 示例。功能更齐全的实现也适用于 Windows XP 和更早版本(在这种情况下使用所有者绘制的菜单),可在带有 C# 图标的 Vista 菜单,但这对我来说比必要的更复杂。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)