如何在MenuStrip中使用键盘时修复奇怪的滚动/对齐行为?

时间:2010-04-09 16:08:02

标签: c# .net winforms user-interface

在导航Winforms应用程序的主工具栏时,我开始注意到奇怪的行为,我不知道如何修复它。当我最初打开文件菜单的下拉列表时,它看起来像这样:

normal

我开始用箭头键向下滚动每个项目,一切都很好,直到我到达“退出”。一旦我从“注销”中点击向下箭头键,或者如果我从“打开”按下向上箭头键,菜单就会自行重新排列,如下所示:

alt text

我对这种行为感到困惑。菜单仍然有效,从这一点来说,如果我开始向上滚动,我可以让安排恢复正常:

alt text

一些观察结果:

  • 菜单仍有效。
  • 使用鼠标时不会发生这种情况。
  • 我有一些代码可以切换某些菜单项的Visible属性。我能够通过玩这个来修改安排是什么,但它仍然搞砸了。

任何人都可以帮我理解发生了什么,以及如何解决它?

1 个答案:

答案 0 :(得分:2)

我找到了这个问题的根源。微软显然不打算修复known bug。当您尝试在运行时切换菜单项的可见性/可用性时,会发生此问题。微软提醒我们“这个问题纯粹是视觉问题,没有功能损失。”

他们建议的解决方法是添加/删除菜单项,而不是显示/隐藏它们。

论坛上建议使用另一个workaround:从ToolStripDropDownMenu派生,关闭AutoSize,自己处理它,并添加1个额外的高度像素。

我找到了解决此问题的blog post,但作者从未尝试过发布他的解决方案。然而,他对Visible vs Available提出了一个有用的观点。