2012-10-24 58 views
0

你好,感谢您的阅读。WPF Catch Ctrl + N不工作

我在Kiosk风格的WPF应用程序中嵌入WebBrowser,我试图阻止用户能够使用Ctrl + O或Ctrl + N键盘快捷键绕过我限制它们的页面。

这里是我的代码是在应用程序的最上面的窗口:

// This is in the constructor of the window under InitializeComponent(); 
AddHandler(Keyboard.PreviewKeyDownEvent, (System.Windows.Input.KeyEventHandler)HandleKeyDownEvent); 

private void HandleKeyDownEvent(object sender, System.Windows.Input.KeyEventArgs e) 
{ 
    Key key = (e.Key == Key.System) ? e.SystemKey : e.Key; 
    if(e.KeyboardDevice.Modifiers == ModifierKeys.Control) 
    { 
     switch(key) 
     { 
     case Key.N: 
     case Key.O: 
     case Key.P: 
      MessageBox.Show("BOOM"); 
      break; 
     } 
    } 
} 

事件处理是否正确触发,当我按下Ctrl + N,但e.Key是Key.Control不是重点。 N.当按下Ctrl按钮时(如预期的那样),看起来该事件立即触发,但未能捕捉到N键。我曾尝试使用Keyboard.IsKeyDown(Key.N),并返回false。

欢迎任何意见或建议。

感谢,

亚当

编辑:我也试图避免在使用浏览器本身的NewWindow,NewWindow2和NewWindow3事件的新窗口。那里也没有运气。

回答

0

嗯,我觉得像一个完整的麻木头骨!事实证明,这与添加以下代码行一样简单。我希望这有助于其他人可能会像我一样尝试非常复杂的解决方案。

 browser.WebBrowserShortcutsEnabled = false;