Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:组件干扰热键_C#_Wpf_Hotkeys - Fatal编程技术网

C# WPF:组件干扰热键

C# WPF:组件干扰热键,c#,wpf,hotkeys,C#,Wpf,Hotkeys,我在我的WPF应用程序中嵌入了Acrobat Reader,我定义了几个热键,我想做一些工作,但是热键只在我在文本框和类似的地方工作。我发现这一定是因为Adobe Acrobat Reader比我先获得热键,因为如果我将ctrl-shift-s映射到一个函数,当我在文本框中按下它时,我的函数被调用,但如果焦点不在文本框中,Adobe的保存函数被调用 如何确保为MainWindow定义的热键是已执行的热键,而不是Acrobat Reader或其他任何东西的热键 干杯 Nik在应用程序中听起来像是键

我在我的WPF应用程序中嵌入了Acrobat Reader,我定义了几个热键,我想做一些工作,但是热键只在我在文本框和类似的地方工作。我发现这一定是因为Adobe Acrobat Reader比我先获得热键,因为如果我将ctrl-shift-s映射到一个函数,当我在文本框中按下它时,我的函数被调用,但如果焦点不在文本框中,Adobe的保存函数被调用

如何确保为MainWindow定义的热键是已执行的热键,而不是Acrobat Reader或其他任何东西的热键

干杯


Nik

在应用程序中听起来像是键盘焦点,默认为嵌入式Acrobat Reader,因此当您的主窗口获得按键时,它会优先于其他任何内容(包括它自己的菜单命令)将其提供给Reader

这有点困难,因为您可能希望阅读器接收焦点并处理其键盘快捷键——而不是主窗口定义的快捷键


尝试在MainWindow类中重写OnKeyDown,并查看Ctrl+Shift+S是否到达那里。如果是,则直接调用相应的命令事件处理程序进行响应,并在事件参数中将Handled设置为true,以防止MainWindow将该键发送到其他任何地方。

听起来很有趣。我不需要AcrobatReader中的键盘快捷键,我只会使用它查看单个页面,并可能复制一些OCR文本。(好的,我想我需要ctrl-c,但就是这样:-)有没有办法让我的应用程序先处理键盘,获得键盘焦点,然后在我没有响应时将其留给Acrobat?感谢您提供关于OnKeyDown的提示,我将使用该提示进行检查。:-)最终,应用程序的用户控制键盘焦点,而阅读器必须获得文本选择和复制的焦点,所以我认为试图将焦点从阅读器上移开是行不通的。但在OnKeyDown覆盖中,您只需在事件参数中将不希望读取器处理的任何键盘快捷键的Handled设置为true。