WPF Catch Ctrl + N不起作用

时间:2012-10-24 15:36:24

标签: wpf keyboard-shortcuts keyboard-events kiosk

您好,感谢您的阅读。

我在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而不是Key.N.按下Ctrl按钮(如预期的那样)会立即触发事件,但无法捕获N键。我尝试过使用Keyboard.IsKeyDown(Key.N)并返回false。

欢迎任何建议或建议。

谢谢,

亚当

编辑:我还尝试使用浏览器本身的NewWindow,NewWindow2和NewWindow3事件阻止新窗口。那里也没有运气。

1 个答案:

答案 0 :(得分:0)

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

     browser.WebBrowserShortcutsEnabled = false;