2012-07-14 53 views
1

我目前正在研究一個有兩個組件的項目。功能區和RichTextBox(System.Windows.Controls.RichTextBox)。帶有功能區的wpf富文本框的Alt +數字(ASCII碼)輸入

我正面臨一個問題,即ASCII代碼(例如alt + 123是'{')輸入沒有得到體現,因爲按下Alt會觸發keytip命令。特別是使用功能區時,有一個由Alt +編號觸發的快速訪問工具欄。

有沒有解決這個問題的建議?或者我應該放棄richtextbox的ASCII碼輸入?

非常感謝您提前。

編輯:這是我正在

protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if (e.Key == Key.NumPad0 || 
      e.Key == Key.NumPad1 || 
      e.Key == Key.NumPad2 || 
      e.Key == Key.NumPad3 || 
      e.Key == Key.NumPad4 || 
      e.Key == Key.NumPad5 || 
      e.Key == Key.NumPad6 || 
      e.Key == Key.NumPad7 || 
      e.Key == Key.NumPad8 || 
      e.Key == Key.NumPad9) 
     { 
      if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)) 
       return; 
      if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl)) 
       return; 
     } 

     base.OnKeyDown(e); 
    } 

Ctrl鍵的部分將打在調試,但Alt鍵部分都打不到的辦法。它工作了好幾次,讓我興奮不已。但是,只有當我破解代碼並在運行中修改並運行代碼時,它纔會起作用。如果我重新編譯所有內容並運行該程序,它將回到原始狀態(根本沒有觸發代碼)(KeyTip彈出)。 任何建議表示讚賞。

回答

0

我認爲你最好的選擇是重寫KeyDown事件。當你評估e.Key,確保額外評估您的IF語句如下:

Keyboard.IsKeyDown(Key.LeftAlt) 

Keyboard.IsKeyDown提供了一種方法,看看哪些修飾符參與當前的按鍵。

+0

非常感謝您的回覆。 – 2012-07-14 19:08:25

+0

我想過重寫OnKeyDown。但是,我無法想出成功保持KeyTip行爲並輸入ASCII輸入的方式。如果以下輸入是ASCII碼,我只想允許alt輸入而不需要使用由Alt觸發的快捷方式。 – 2012-07-14 19:16:12

+0

@ publicst119您可以改爲檢查Keyboard.IsKeyDown(Key.NumPad0)等,然後頂部的數字仍然適用於色帶命令。 – 2012-07-14 19:22:59

0

這似乎是一個應用程序,我只是把攜手合作,嘗試一下:

protected override void OnKeyDown(KeyEventArgs e) 
    { 
     if (e.Key == Key.NumPad0 || 
      e.Key == Key.NumPad1 || 
      e.Key == Key.NumPad2 || 
      e.Key == Key.NumPad3 || 
      e.Key == Key.NumPad4 || 
      e.Key == Key.NumPad5 || 
      e.Key == Key.NumPad6 || 
      e.Key == Key.NumPad7 || 
      e.Key == Key.NumPad8 || 
      e.Key == Key.NumPad9) 
      { 
       if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt)) 
       { 
        e.Handled = true; 
        return; 
       } 
      } 

     base.OnKeyDown(e); 
    } 

如果你還在苦苦掙扎,我們可能需要看到更多的代碼 - 如果你能使用創建一個簡單的應用程序同樣的原則,並給我們它會幫助的XAML代碼。