【问题标题】:WPF TextBox Not Accepting Delete KeyWPF 文本框不接受删除键
【发布时间】:2009-06-10 19:48:43
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: c# wpf textbox outlook


    【解决方案1】:

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

    我似乎无法让 WM_COMMAND 在除退格之外的任何其他按键上触发,因此它现在运行良好。

    【讨论】:

    • 出于兴趣,您是否还比较了 WParam 的值,还是仅查看事件是否发生?此解决方案是否仍然适合您? :-)
    • 我只是在 WM_COMMAND 上发送退格键,因为它运行良好。但是,Ctrl-Z 也会触发退格键,但很难注意到,因为您在撤消中无论如何都在删除字符。我的想法:我得到了它的工作,我还有其他事情要担心实际上很重要并且还没有解决:)
    • 您好,我遇到了完全相同的问题,但是在 Outlook 的 WPF 窗口中嵌入了网络浏览器。您能否发布一些有关如何实现此目的的代码?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多