2010-08-13 14 views
0

J'ai deux richtextboxes l'une en dessous de l'autre dans mon application. Lorsque l'utilisateur commence la sélection dans une zone richtextbox et continue vers l'autre, la sélection richtextbox devrait automatiquement passer à la seconde richtextbox. de sélection.Problème de sélection WPF richtextbox

merci à l'avance, dhyanesh

+0

J'utilise MouseEnter et MouseLeave pour implémente ce comportement –

Répondre

0

On dirait que vous pouvez utiliser MouseEnter et MouseLeave, mais lorsque la souris est capturé (comme il est lors de la sélection de texte), ces événements ne se déclenchent pas comme prévu.

La façon d'atteindre votre objectif est:

  1. Abonnez-vous à MouseMove le premier RichTextBox.
  2. Dans l'événement MouseMove, vérifiez Mouse.Captured pour voir s'il s'agit du RichTextBox.
  3. Si la souris est capturée, effectuez un test d'impact sur la position actuelle de la souris à l'aide de VisualTreeHelper.HitTest. Accédez à l'arborescence visuelle à partir de la valeur HitTestResult.VisualHit pour voir si la souris est au-dessus d'un RichTextBox autre que celui en cours.
  4. Si la souris survole une nouvelle RichTextBox, annulez la capture de la souris avec Mouse.Capture(null), puis déclenchez un événement MouseLeftButtonDown sur la nouvelle RichTextBox pour l'amener à capturer la souris et commencer la sélection.
+0

Il a travaillé merci beaucoup – Dhyanesh

+0

je veux conserver la sélection de plusieurs textbox.is il possible de le faire. – Dhyanesh

+0

Je crois que ce n'est possible que si vous placez chaque RichTextBox dans une portée de focus différente en utilisant FocusManager.IsFocusScope, mais je serais inquiet que le fait de permettre deux contrôles à la fois peut être source de confusion pour l'utilisateur final. Une autre approche consisterait à mettre à jour les couleurs ou d'autres attributs du document pour indiquer la sélection. –