当WinForms控件托管在VB6表单中时,如何使ToolStripMenuItem快捷键起作用

4
我们有一个场景,我们正在通过COM向遗留的VB6应用程序公开一组WinForms UserControls。我们有3个不同的控件,其上有一个MenuStrip,其中将Control + F快捷键映射到菜单项,当输入快捷键时会调用特定于控件的查找项目对话框。在我们尝试在WinForms shell中测试此代码时,当存在所有3个控件时,适当的对话框(托管在活动的MdiChild中)弹出,但在VB6主机中通常会出现错误的对话框(似乎总是创建的第一个控件的对话框)。
我相当确定这与消息泵有关,但我似乎无法弄清楚如何确保在输入快捷键时调用正确的ToolStripMenuItem。
我知道使用全局/单例ShortcutKey管理器/服务覆盖ProcessCmdKey的选项是可能的,但那将是我们想要回退的最后选择。我只是觉得需要启动一个消息泵。
1个回答

0

这可能不符合您的需求。而且它可能只适用于VB6。但是,您是否考虑过让VB6使用标准菜单,并仅保留键盘快捷键,并适当地触发事情?然后,您可以简单地隐藏各个菜单(但它们仍应触发其事件)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接