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

C# 如何修复在MenuStrip中使用键盘时奇怪的滚动/对齐行为?,c#,.net,winforms,user-interface,C#,.net,Winforms,User Interface,在浏览Winforms应用程序的主工具栏时,我开始注意到奇怪的行为,我不知道如何修复它。当我最初打开文件菜单的下拉菜单时,它看起来如下所示: 我开始用箭头键向下滚动每个项目,一切都很好,直到我到达“退出”。当我从“注销”中按下向下箭头键,或从“打开”中按下向上箭头键时,菜单会自动重新排列,如下所示: 我对这种行为感到困惑。菜单仍然有效,从这一点开始,如果我开始向上滚动,我可以使排列恢复正常: 一些意见: 菜单仍然有效 使用鼠标时不会发生这种情况 我有一些代码可以切换一些菜单项的属性。我可

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

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

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

一些意见:

  • 菜单仍然有效
  • 使用鼠标时不会发生这种情况
  • 我有一些代码可以切换一些菜单项的属性。我可以通过摆弄这个来修改安排,但仍然是一团糟

有人能帮我了解发生了什么,以及如何解决它吗?

我找到了这个问题的根源。这是一个微软显然不打算解决的问题。当您试图在运行时切换菜单项的可见性/可用性时,就会出现此问题。微软提醒我们,“这个问题纯粹是视觉问题,没有功能损失。”

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

论坛上还建议使用另一种方法:从ToolStripDropDownMenu派生,关闭自动调整大小,自行处理,并添加1个额外的高度像素

我找到了一个解决这个问题的方法,但作者从未抽出时间发布他的解决方案。然而,他提出了一个关于可见与可用的有用观点