2009-06-10 94 views
4

我有一个嵌入在Microsoft Outlook 2003窗口中的WPF应用程序。一切工作正常,除了我的TextBox控件没有接受退格键。我做了一些研究,只有当我的窗口是Outlook窗口的子窗口而不是其他窗口时,问题才存在(我将它注入到Firefox并且工作正常,并且如果将我的wpf UserControl放入对话窗口它也可以)。这似乎是人们报告(文本框只接受删除/方向键/等)相反的问题,而这个线程有些信息(虽然没有解决我的问题):WPF TextBox not accepting Input when in ElementHost in Window FormsWPF文本框不接受删除键

这里是我的设置: 我创建一个WPF UserControl,然后我将它放在一个ElementHost中。我将该主机放入一个Wi​​ndows窗体用户控件中,该控件被放入另一个窗体用户控件中,该窗体被放入NativeWindow中(我尝试删除一些用户控件封套,但没有任何效果)。这个Native窗口然后成为Outlook窗口的子窗口,并放置在我需要它在Outlook中的位置。

有没有人有任何想法?也许我需要处理Windows消息不同?我做了一些调查,发现当我点击退格键时,Outlook会收到一条WM_COMMAND消息,但是当我没有碰到其他东西的时候没有。也许它是解释退格键作为菜单加速器或类似的东西?

谢谢。

回答

1

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

我似乎无法让WM_COMMAND在除backspace之外的任何其他按键上触发,因此它现在工作得相当好。

+0

出于兴趣,你是否也比较了WParam的价值,或者你只看到事件是否发生了?该解决方案是否仍能正常工作? :-) – traskjd 2009-11-25 03:33:59