WPF文本框无法接受删除键

5
我有一个嵌入在Microsoft Outlook 2003窗口中的WPF应用程序。除了我的所有TextBox控件都不接受退格键之外,一切正常。我做了一些研究,发现这个问题只存在于我的窗口是Outlook窗口的子级时,而不是如果它是另一个窗口(我将其注入到Firefox中并且运行良好,如果我将我的wpf UserControl放入对话框窗口中也可以工作)。这似乎是人们报告的相反问题(文本框只接受删除/箭头键等),这个主题有点信息量(虽然没有解决我的问题):WPF TextBox not accepting Input when in ElementHost in Window Forms 这是我的设置: 我创建了一个WPF UserControl,然后将其放入ElementHost中。我将该主机放入Windows Forms UserControl中,该UserControl再被放入另一个Forms UserControl中,该控件再被放入NativeWindow中(我尝试过删除一些UserControl包装,但没有效果)。然后,这个Native window成为Outlook窗口的子级,并被放置在我需要的位置。
有人有什么想法吗?也许我需要以不同的方式处理窗口消息?我做了一些研究,发现Outlook在我按退格键时会收到WM_COMMAND消息,但是当我没有按其他任何键时就不会收到。也许它将退格键解释为菜单加速器或类似的东西?
谢谢。
1个回答

1

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

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


你是否也比较WParam的值,还是只是检查事件是否发生?这个解决方案对你仍然有效吗? :-) - traskjd
我只是在 WM_COMMAND 上发送了退格键,因为它可以正常工作。然而,Ctrl-Z 也会触发一个退格键,但由于您正在撤消操作中删除字符,所以很难注意到。我的想法是:我已经让它工作了,我还有其他实际重要且尚未解决的事情需要担心 :) - Max
嗨,我遇到了完全相同的问题,但是在 Outlook 中嵌入了一个 WebBrowser 到 WPF 窗口中。你能否发布一些代码,说明你是如何实现这个的?谢谢。 - Nikhil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接