2011-08-09 79 views

回答

0

只需添加一個處理程序e.handled的keydown事件和集=真心對你不想讓關鍵。樣本位於頁面上,處理alt-p和alt-n,但原理相同。您將需要修改此代碼,因爲它不旨在取消關鍵筆劃,但它確實顯示如何處理keydown事件。

<Window x:Class="Gabe2a.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase" 
    DataContext="{Binding Source={x:Static Application.Current}}" 
    Title="Gabriel Main" Height="600" Width="800" KeyDown="Window_KeyDown"> 

    private void Window_KeyDown(object sender, KeyEventArgs e) 
    { 
     // Debug.WriteLine("Main Window Window_KeyDown " + e.Key.ToString()); 
     e.Handled = false; 
     if (e.KeyboardDevice.Modifiers == ModifierKeys.Alt) // && e.KeyboardDevice.IsKeyDown(Key.RightAlt)) 
     { 
      if (e.Key == Key.System && e.SystemKey == Key.N) 
      { 
       e.Handled = true; 
       App.StaticGabeLib.Search.NextDoc(); 
      } 
      else if (e.Key == Key.System && e.SystemKey == Key.P) 
      { 
       e.Handled = true; 
       App.StaticGabeLib.Search.PriorDoc(); 
      } 
     } 
     base.OnKeyDown(e); 
    } 

樣品爲在KeyDown連接到一個TextBox

  <TextBox KeyDown="TBKeydown" /> 
+0

具體示例如何實現TextBox的上述代碼(如果可以避免,則不希望爲整個窗口執行此操作) http://social.msdn.microsoft.com/forums/zh-cn/ US/wpf/thread/d2d816c2-898f-4b4e-9756-96b6c5eb44e7 – EtherDragon

+0

您只是將事件附加到TextBox。事件語法對於任何類型的控件都是相同的。使用WPF有一個事件冒泡,這是非常有用的,你可能想要閱讀。 – Paparazzi