2009-03-31 43 views
7

私はWPFアプリケーションでC#.netを使って作業しています。 無効にする方法はありますか?Backspace特定のxamlページのボタンです。 この特定のxamlページでBackspaceボタンを使用しないようにしたい。ユーザーがのBackspaceボタンを押しても、効果はありません。wpfのバックスペースを無効にする

おかげ

答えて

6

あなたがバックスペースをtrueに扱わOnKeyDownイベントとセットをキャッチする必要があります。

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Back) 
    { 
     e.Handled = true; 
    } 
} 
+1

彼はナビゲーションを意味している場合、あなたはおそらくに持っているように、その後の状況は、少し複雑かもしれませんAlt + Leftといくつかのマウスボタンも処理します。 – Joey

+2

これはPreviewKeyDownイベントを実際に処理する必要があります。そうでなければ、TextBoxのような別のコントロールにフォーカスがあると、キーが傍受されません。なぜ彼はバックスペースキーを無効にしたいのか言っていないので、おそらく彼はエントリーコントロールでそれをサポートしたいと考えています。 –

+0

Hee Abe、それはPreviewKeyDownイベントを処理しました。 ありがとうございました。 –

21

あなたは、特別な「戻る」ハードウェアボタンを含む、使用をWPFフレームに戻ってナビゲーション履歴上がってバックスペースを防ぎたい場合:

NavigationCommands.BrowseBack.InputGestures.Clear(); 
NavigationCommands.BrowseForward.InputGestures.Clear(); 
+0

これはコードのどこにありますか? App.xaml.csなどで – Brendan

+1

これを理解しました。これを 'NavigationWindow'コンストラクタに入れてください。 – Brendan

0

私はしませんでしたので、だから私はapproach by sipwizを優先すべてのキーボードショートカットを無効にしたい(私はまだALT-Leftなどをバックスペースなしで使用したい)。

私がWPF NavigationWindowを使用している場合は、OnKeyDownメソッドをオーバーライドしても機能しませんでしたが、Backspaceキーを押したときにウィンドウが移動しました。 OnPreviewKeyDownを無効にすることはやり始めましたが、テキストボックスを扱うためにBackspaceキーが必要になったときに問題に遭遇しました。

だから、私はapproach by Ed Andersenから学んだものを取って、私は私のNavigationWindowコンストラクタに次のコードを追加しました:

KeyGesture backKeyGesture = null; 
foreach(var gesture in NavigationCommands.BrowseBack.InputGestures) 
{ 
    KeyGesture keyGesture = gesture as KeyGesture; 
    if((keyGesture != null) && 
     (keyGesture.Key == Key.Back) && 
     (keyGesture.Modifiers == ModifierKeys.None)) 
    { 
     backKeyGesture = keyGesture; 
    } 
} 

if (backKeyGesture != null) 
{ 
    NavigationCommands.BrowseBack.InputGestures.Remove(backKeyGesture); 
} 
関連する問題