右键单击时,ActiveX控件不会获得焦点

时间:2012-05-24 11:36:46

标签: wpf winforms focus activex

我正在研究一个托管在MFC和VB6应用程序中的ActiveX控件。

此ActiveX包含一个WPF控件,它本身由WinForms ElementHost托管,即:

  

MFC> .NET ActiveX> WinForms ElementHost> WPF UserControl

当用户右键单击控件时,他必须能够使用键盘箭头键在上下文菜单中导航。

如果右键单击时我的控件具有焦点,则一切正常。

但是,如果用户右键单击时焦点位于主机应用程序中,则键盘事件将继续发送到主机MFC应用程序。

当我检测到右键单击时,我尝试在我的WPF控件上调用Focus()方法,但它不起作用。

有人有想法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。

当WPF表单上发生PreviewMouseRightButtonDown事件时,我在WinForm主机控件上调用Focus方法。

我真的不明白为什么,但这可以让用户使用他们的键盘在上下文菜单中导航。