2010-12-14 2 views
2

Essayer de raiseEvent to textBox - mais je ne vois pas la valeur de la clé dans le texte de la zone de texte. Je peux voir que l'événement textbox "OnKeyDownEvent" s'arrête dans les points d'arrêt - mais je ne comprends pas pourquoi le texte de KeyEventArgs (Key.D0) n'est pas inséré dans le texte de la zone de texte.TextBox RaiseEvent KeyDownEvent ne fonctionne pas ... (code joint)

Le code:

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); 
} 

Répondre

2

Vous essayez d'utiliser les événements clés comme la source d'entrée, quand ils sont utilisés pour indiquer le résultat de l'entrée du clavier du système d'exploitation. Ces événements ne provoquent pas l'ajout de texte à un TextBox. Ils indiquent à la place quand la saisie au clavier a été entrée dans un contrôle (comme la TextBox).

Si vous souhaitez simuler la saisie dans une zone de texte de code juste ajouter le texte de votre choix dans la propriété 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;