2016-04-29 11 views

答えて

3

私は以下のコードを試みたが、私にとってはその作品、

var textBox = new TextBox(); 
KeyEventHandler keyeventHandler = new KeyEventHandler(textBox_KeyDown); 

textBox.AddHandler(TextBox.KeyDownEvent, keyeventHandler, true); 

private void textBox_KeyDown(object sender, KeyEventArgs e) 
{ 
*** now Enter Key gets fired eventhough when i set AcceptsReturn as True *** 
} 
+0

'.AddHandler'のように見えるのは、[第3パラメータ、' handlesEventsToo'](https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.uielement#Windows_UI_Xaml_UIElement_AddHandler_)です。 MSDNでは、「*ルーティングされたイベントを再処理するように日常的に要求していません。これは、コントロール合成のためのWindowsランタイムイベントシステムの意図された設計に干渉するためです」*その他の欠点:「Enter」をオフにするのは遅すぎます。 'e.Handled = true; 'を設定しても、TextBoxにEnterが起きるのを止めることはできません。しかしそれ以外の場合は素晴らしい答えです。これは機能します。 – ruffin

0

<TextBox VerticalAlignment="Top" KeyDown="TextBox_KeyDown"/> 

背後にあるコードで:

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e) 
    { 
     Debug.WriteLine(e.Key); 
    } 

出力から、あなたはそれが認識されている入力します見ることができます。

+2

申し訳ありませんが、私は押した場合、キー、KeyDownイベントが発生しません入力してください。 TextBox Handles Enterキーが押されたとき。 TextBoxのAccepts Returnsをtrueに設定しなかった場合、Enterキーを押すとKey downイベントが発生します。しかし、私がAcceptsReturnをtrueに設定した場合、KeyDownイベントは発生しません。 –

1

Enterキーを押すと、テキストボックスのキーダウンイベントが発生しません。これは、テキストボックスのAccepts Returnプロパティをtrueに設定した場合にのみ発生します。

このAcceptsReturnがtrueに設定されている場合ので、Enterキーを押すと、TextBoxは改行文字を許可するので、それは新しい行を開始し、KeyDownイベントが解雇されることはありません。 Otherwiser、false(デフォルトではfalse)に設定されている場合、Enterキーを押すと、入力フォーカス状態のTextBoxになり、KeyDownイベントが発生することがあります。

Enterキーが押されたときはどうすればわかりますか?

私はあなたがこのシナリオでは、Enterキーを識別するために、KeyDownイベントを使用することはできません怖いが、入力したキーが押されたとき、それは新しい行を開始しますので、あなたが通知を受けるために背後にあるコードでTextBox.TextChanged eventを使用することができます。

+0

こんにちは@Grace、回答ありがとうございますが、私は解決策を見つけました。私はこのシナリオのためにHandlerを使用しましたが、今は解雇されます。 –

関連する問題