WPF:TextBox不在按下键(CTRL+;V)事件上粘贴文本

WPF:TextBox不在按下键(CTRL+;V)事件上粘贴文本,wpf,winapi,events,key,Wpf,Winapi,Events,Key,我们有一个WPF窗口托管在Win32窗口中。该实现是这样的:当用户按下CTRL+V时,剪贴板中的文本将粘贴到KeyUp事件中的文本框,而不是KeyDown事件中的文本框(由于托管在MFC中时文本框控件的限制)。因此,我们已经覆盖了KeyUp事件来粘贴文本 但是,在一些机器中,注意到文本在执行CTRL+V时粘贴了两次,仅粘贴了一次。在进一步的调查中发现,它是为KeyDown(默认窗口行为)和KeyUp事件(由我们覆盖)粘贴的 想知道为什么它只粘贴在KeyUp上,甚至在某些机器上,以及在某些机器上同

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

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

想知道为什么它只粘贴在KeyUp上,甚至在某些机器上,以及在某些机器上同时粘贴KeyUp和KeyUp

我们将不胜感激


-Nayan

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

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


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

更多详细信息已为KeyDown事件添加了处理程序。注意,除了CTRL+V、CTRL+C等键的组合之外,所有键都会调用handler。。等在这里当按CTRL键时,不会为V键和C键调用处理程序。。