2013-04-30 80 views
3

在一个完整的应用程序注意到,但完全可再现的一个简单的演示:获取左,右箭头键选择上一个/下一个菜单,而不是一个/上一个菜单

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

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

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

如果这是MenuStrip组件中的错误,或者如果我忘记设置必需的属性,我无法确定本地系统是否有问题。所有这三个人对我来说似乎都很陌生,因为在所有这三种情况下,我都希望有人已经遇到过这个问题,而且我甚至找不到其他人询问这个问题。

如果还不清楚我要问,这里是图像:

Menu strip problem http://i42.tinypic.com/25uis8m.png

差点忘了说了,有没有相关代码。这个演示应用程序是一个全新的WinForms项目,有一个MenuStrip控件添加到它的默认窗体中,并且有三个菜单,每个菜单都有三个项目,每个项目只设置了文本。

+0

不能被我重现。 B1 - >在我的表单上转到C1。 – LarsTech 2013-04-30 17:21:55

+0

感谢您的检查。我想这可能会排除选项三,所以在'MenuStrip'中留下本地系统配置/错误的组合。 – hvd 2013-04-30 17:26:18

回答

5

这是MenuStrip中的一个错误/错误特征。

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

SystemInformation.RightAlignedMenus可通过控制面板,平板电脑设置,其他,手杖,用户配置,事实上,如果我改变它左手,我得到的菜单行为正确。我的默认和正确的设置是右旋。由于MenuStrip组件在我的系统上不是键盘可用的,我将用标准的MainMenu组件代替我的使用。

更新:我实际上使用派生控件能够提供漂亮的菜单图像。它基于the Microsoft sample on "Visual Style Menus"。一个功能更全面的实现也适用于Windows XP和之前的版本(在这种情况下使用自绘菜单),请登录Vista Menu with Icons in C#,但这比我需要的更加复杂。

+0

谢谢你。我只是花了最近几个小时来解决这个问题。我无法相信在一年多之后,这个错误仍然没有得到解决。 – 2014-12-05 01:56:31

相关问题