WPF 文本框不接受删除键

Max*_*Max 5 c# wpf outlook textbox

我有一个嵌入在 Microsoft Outlook 2003 窗口中的 WPF 应用程序。一切工作正常,除了我的 TextBox 控件都不接受退格键。我做了一些研究,只有当我的窗口是 Outlook 窗口的子窗口时,问题才存在,而不是另一个窗口(我将它注入到 firefox 中,它工作正常,如果我将 wpf UserControl 放入对话框窗口中,则问题存在)它也有效)。这似乎是人们报告的相反问题(文本框仅接受删除/箭头键/等),并且该线程提供了一些信息(尽管没有解决我的问题):WPF TextBox not acquire input when in ElementHost in Window Forms

这是我的设置:我创建一个 WPF UserControl,然后将其放入 ElementHost 中。我将该主机放入 Windows 窗体用户控件中,该控件放入另一个窗体用户控件中,后者放入 NativeWindow 中(我尝试删除一些用户控件包装,但没有效果)。然后,此本机窗口将成为 Outlook 窗口的子窗口,并放置在 Outlook 中我需要的位置。

有人有什么主意吗?也许我需要以不同的方式处理 Windows 消息?我做了一些研究,发现当我按退格键时 Outlook 会收到 WM_COMMAND 消息,但当我不按其他任何键时则不会。也许它将退格键解释为菜单加速器或类似的东西?

谢谢。

Max*_*Max 1

我找到了解决这个问题的方法。我扩展了 Outlook 的 WndProc 并监听 WM_COMMAND。每当它出现时,我都会告诉我的 WPF UserControl 系统将退格键发送到当前键盘聚焦的控件。

除了退格键之外,我似乎无法让 WM_COMMAND 在任何其他按键上触发,所以它现在工作得很好。