尝试将事件提升为textBox - 但我没有在textBox文本中看到键值。 我可以看到文本框事件“OnKeyDownEvent”在断点处停止 - 但我不明白为什么KeyEventArgs(Key.D0)的文本没有插入到文本框文本中。
代码:
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 );
}
答案 0 :(得分:2)
当它们实际用于指示来自OS的键盘输入结果时,您尝试使用Key事件作为输入源。这些事件不会导致文本添加到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;