2010-12-14 34 views
2

textBoxにraiseEventを書き込もうとしていますが、テキストボックスのテキストにキー値が表示されません。 テキストボックスイベント "OnKeyDownEvent"がブレークポイントで停止していますが、KeyEventArgs(Key.D0)のテキストがテキストボックステキストに挿入されない理由を理解できません。TextBox RaiseEvent KeyDownEventが機能しません...(コードが添付されています)

コード:

if(currentTextBoxInFocus != null) 
{ 
    KeyEventArgs k = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, System.Environment.ProcessorCount, Key.D0); 
    //KeyEventArgs k = new KeyEventArgs(Keyboard.PrimaryDevice, Keyboard.PrimaryDevice.ActiveSource, 0, Key.D0); 
    k.RoutedEvent = UIElement.KeyDownEvent; 
    currentTextBoxInFocus.RaiseEvent(k); 
    k.RoutedEvent = UIElement.KeyUpEvent; 
    currentTextBoxInFocus.RaiseEvent(k); 
} 

答えて

2

あなたは彼らが実際にOSからキーボード入力の結果を示すために使用されるとき、入力のソースとしてキーイベントを使用しようとしています。これらのイベントによって、TextBoxにテキストが追加されることはありません。代わりに、キーボード入力がコントロール(TextBoxのような)に入力されたことを示します。

あなたがコードからテキストボックスに入力してシミュレートしたい場合は、単にTextプロパティに必要なテキストを追加するには:

int caret = currentTextBoxInFocus.CaretIndex; 
currentTextBoxInFocus.Text = String.Format("{0}0{1}", currentTextBoxInFocus.Text.Substring(0, caret), currentTextBoxInFocus.Text.Substring(currentTextBoxInFocus.CaretIndex)); 
currentTextBoxInFocus.CaretIndex = caret + 1; 
関連する問題