我正在研究一个托管在MFC和VB6应用程序中的ActiveX控件。
此ActiveX包含一个WPF控件,它本身由WinForms ElementHost托管,即:
MFC> .NET ActiveX> WinForms ElementHost> WPF UserControl
当用户右键单击控件时,他必须能够使用键盘箭头键在上下文菜单中导航。
如果右键单击时我的控件具有焦点,则一切正常。
但是,如果用户右键单击时焦点位于主机应用程序中,则键盘事件将继续发送到主机MFC应用程序。
当我检测到右键单击时,我尝试在我的WPF控件上调用Focus()方法,但它不起作用。
有人有想法吗?
感谢。
答案 0 :(得分:0)
我找到了解决方法。
当WPF表单上发生PreviewMouseRightButtonDown
事件时,我在WinForm主机控件上调用Focus
方法。
我真的不明白为什么,但这可以让用户使用他们的键盘在上下文菜单中导航。