当WinForms控件托管在VB6窗体中时,如何使ToolStripMenuItem快捷键工作

当WinForms控件托管在VB6窗体中时,如何使ToolStripMenuItem快捷键工作,winforms,vb6,interop,keyboard-shortcuts,Winforms,Vb6,Interop,Keyboard Shortcuts,我们有一个场景,通过COM向遗留VB6应用程序公开一组WinFormsUserControls。我们有3个不同的控件,上面有一个MenuStrip,该控件的Control+F快捷键映射到一个菜单项,该菜单项在输入快捷键时调用控件特定的“查找项”对话框。当我们尝试在WinForms shell中测试此代码时,当所有3个控件都存在时,会弹出相应的对话框(位于活动的MdiChild中的对话框),但在VB6主机中,通常会出现错误的对话框(似乎总是创建的第一个控件的对话框) 我很确定这与消息泵和所有东西有

我们有一个场景,通过COM向遗留VB6应用程序公开一组WinForms
UserControls
。我们有3个不同的控件,上面有一个
MenuStrip
,该控件的Control+F快捷键映射到一个菜单项,该菜单项在输入快捷键时调用控件特定的“查找项”对话框。当我们尝试在WinForms shell中测试此代码时,当所有3个控件都存在时,会弹出相应的对话框(位于活动的
MdiChild
中的对话框),但在VB6主机中,通常会出现错误的对话框(似乎总是创建的第一个控件的对话框)

我很确定这与消息泵和所有东西有关,但我似乎不知道如何确保在输入快捷键时调用正确的
ToolStripMenuItem


我知道可以选择使用覆盖
ProcessCmdKey
的全局/singleton
ShortcutKey
管理器/服务,但这将是我们希望依赖的最后手段。我只是觉得需要启动信息泵。

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