C# 在应用程序中的任意位置按下特定组合键时调用方法,只要应用程序当前处于焦点窗口
我的目标是允许我的应用程序的用户通过按键盘上的CTRL+F11组合键来打开我所谓的调试控制台 简单地说,我需要调用一个C# 在应用程序中的任意位置按下特定组合键时调用方法,只要应用程序当前处于焦点窗口,c#,.net,wpf,C#,.net,Wpf,我的目标是允许我的应用程序的用户通过按键盘上的CTRL+F11组合键来打开我所谓的调试控制台 简单地说,我需要调用一个ToggleDebug()
ToggleDebug()方法,它将启用调试跟踪代码并显示窗口。我希望我的应用程序在按下CTRL+F11的任何时候都能这样做,而不管用户当前在哪里聚焦光标,只要我的应用程序是当前聚焦的窗口
我的应用程序是通过单击一次部署的,因此它是一个部分信任类型的环境
在一个旧的VB6应用程序中,我使用了一个调用DoEvents()
的wend
循环和一个windows API调用。。。不用说,我希望现在有更好的方法。您可以处理窗口的PreviewKeyDown事件
public MainWindow()
{
InitializeComponent();
this.PreviewKeyDown += new KeyEventHandler(MainWindow_PreviewKeyDown);
}
void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
if ((e.Key == Key.F11) && (Keyboard.Modifiers == ModifierKeys.Control))
{
}
}
为什么要推荐PreviewKeyDown和KeyDown?窗口上的PreviewKeyDown每次都会被点击。KeyDown没有。例如,如果窗口中的控件在内部处理KeyDown事件并将其e.Handled设置为True,则该事件将不会在窗口中引发。