0

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

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

MFC > .NET ActiveX > WinForms ElementHost > WPF 用户控件

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

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

但是如果当用户右键单击时焦点在宿主应用程序中,则键盘事件会继续发送到宿主 MFC 应用程序。

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

有人有想法吗?

谢谢。

4

1 回答 1

0

我找到了一种解决方法。

PreviewMouseRightButtonDownWPF 窗体上发生事件时,我调用FocusWinForm 宿主控件上的方法。

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

于 2012-06-28T08:25:11.880 回答