WPF:TextBox不会在KeyDown(CTRL + V)事件上粘贴文本

时间:2013-03-26 06:22:46

标签: wpf winapi events key

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

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

想知道为什么即使在KeyDown和KeyUp的某些机器和某些机器上也仅粘贴在KeyUp上?

帮助将不胜感激。

-Nayan

1 个答案:

答案 0 :(得分:0)

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

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

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