【发布时间】:2013-10-23 07:12:10
【问题描述】:
我有一个 ContextMenuStrip,其中包含动态生成的 ToolStripMenuItems 的子菜单。最多有 80 个子菜单项。按所需菜单项的第一个字母会正确选择它,但如果该项目恰好超出可见范围(在滚动箭头处理的范围内),则不会显示 - 用户必须按向上箭头然后在屏幕上显示并聚焦所需选项的向下箭头。
例如,我有 6 个以“m”开头的项目,但只有 3.5 个可见。我按 m 一个,第一个项目突出显示,我再按 m 3 次,我可以看到半个选定的行(它在可见区域的底部),再按 m 两次,我看不到选择行,然后再 m 一次,第一个 m 条目可见并再次被选中。
默认情况下 ToolStripMenuItems (TSMI) 没有可用的关键侦听器,但是如果我将 TSMI 子类化,我可以捕获 ProcessDialogKey 和 ProcessCmdKey 并手动选择正确的选项,但我无法向下滚动工具条子菜单以确保我的选项可见。
关于如何操作的任何提示:
a) 滚动工具条的子菜单
或
b) 允许子菜单使用多列(并希望用户的分辨率不会低得离谱)。
【问题讨论】: