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:
- Abonnez-vous à
MouseMove
le premier RichTextBox.
- Dans l'événement
MouseMove
, vérifiez Mouse.Captured
pour voir s'il s'agit du RichTextBox.
- 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.
- 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.
J'utilise MouseEnter et MouseLeave pour implémente ce comportement –