2010-12-14 3 views
2

Пытается поднятьEvent to textBox - но я не вижу значения ключа в тексте textBox. Я вижу, что событие текстового поля «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

Вы пытаетесь использовать ключевые события в качестве источника ввода, когда они фактически используются для обозначения результата ввода с клавиатуры от операционной системы. Эти события не приводят к добавлению текста в TextBox. Вместо этого они указывают, когда ввод клавиатуры введен в элемент управления (например, 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; 
Смежные вопросы