Можно подумать, что вы могли бы использовать MouseEnter
и MouseLeave
, но когда мышь захвачена (как при выборе текста), эти события не срабатывают, как и ожидалось.
Путь к достижению своей цели является:
- Подписаться на
MouseMove
на первом RichTextBox.
- В событии
MouseMove
отметьте Mouse.Captured
, чтобы узнать, является ли это RichTextBox.
- Если мышь захвачена, выполните тест на текущую позицию мыши с использованием
VisualTreeHelper.HitTest
. Поднимите визуальное дерево из значения HitTestResult.VisualHit
, чтобы увидеть, находится ли мышь над RichTextBox, отличным от текущего.
- Если мышь находится над новым RichTextBox, отмените захват мыши с помощью
Mouse.Capture(null)
, затем запустите событие MouseLeftButtonDown
на новом RichTextBox, чтобы заставить его захватить мышь и начать выделение.
Я хотел бы использовать MouseEnter и MouseLeave для реализует это поведение –