2

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

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

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

帮助将不胜感激。

-纳扬

4

1 回答 1

0

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

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

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

于 2013-03-27T07:45:49.667 回答