【问题标题】:WPF: TextBox do not paste text on KeyDown (CTRL+V) eventWPF:TextBox 不会在 KeyDown (CTRL+V) 事件上粘贴文本
【发布时间】:2013-03-26 06:22:45
【问题描述】:

我们在 Win32 窗口中托管了一个 WPF 窗口。实现是这样的,当用户按下 CTRL+V 时,剪贴板中的文本在 KeyUp 事件中而不是在 KeyDown 事件中粘贴到 TextBox(由于在 MFC 中托管时对 TextBox 控件的限制)。因此我们重写了 KeyUp 事件来粘贴文本。

但是,在某些机器中,我们注意到在执行 CTRL+V 时文本会被粘贴两次仅一次。进一步调查发现它被粘贴到 KeyDown(默认窗口行为)和 KeyUp 事件(被我们覆盖)。

想知道为什么它只粘贴在 KeyUp 上,即使在某些机器上和在某些机器上同时用于 KeyDown 和 KeyUp?

我们将不胜感激。

-纳扬

【问题讨论】:

  • 更多细节 现在为 KeyDown 事件添加了一个处理程序。请注意,除了 CTRL+V、CTRL+C.. 等键的组合之外,所有键都调用了处理程序。使用 CTRL 键按下时,不会为 V 和 C 键调用处理程序..

标签: wpf winapi events key


【解决方案1】:

我认为这取决于按下 CTRL+V 时哪个控件具有焦点。

如果编辑控件有焦点,它将收到 WM_PASTE 通知,默认的 WindowProc 会将剪贴板内容粘贴到文本框中。

如果另一个控件具有焦点,您需要自己处理 CTRL+V 才能粘贴到编辑控件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 2023-03-19
    • 1970-01-01
    • 2022-12-22
    • 2017-11-16
    • 2020-11-30
    相关资源
    最近更新 更多