2010-08-13 4 views
0

У меня есть два richtextboxes один под другим в моем приложении. Когда пользователь начнет выделение в одном richtextbox и продолжит выбор другого richtextbox, он должен автоматически перейти ко второму richtextbox. Есть ли способ сделать этот тип выбора.Проблема выбора WPF richtextbox

заранее спасибо, dhyanesh

+0

Я хотел бы использовать MouseEnter и MouseLeave для реализует это поведение –

ответ

0

Можно подумать, что вы могли бы использовать MouseEnter и MouseLeave, но когда мышь захвачена (как при выборе текста), эти события не срабатывают, как и ожидалось.

Путь к достижению своей цели является:

  1. Подписаться на MouseMove на первом RichTextBox.
  2. В событии MouseMove отметьте Mouse.Captured, чтобы узнать, является ли это RichTextBox.
  3. Если мышь захвачена, выполните тест на текущую позицию мыши с использованием VisualTreeHelper.HitTest. Поднимите визуальное дерево из значения HitTestResult.VisualHit, чтобы увидеть, находится ли мышь над RichTextBox, отличным от текущего.
  4. Если мышь находится над новым RichTextBox, отмените захват мыши с помощью Mouse.Capture(null), затем запустите событие MouseLeftButtonDown на новом RichTextBox, чтобы заставить его захватить мышь и начать выделение.
+0

Он работал спасибо очень – Dhyanesh

+0

я хочу, чтобы сохранить выбор для нескольких textbox.is там способ сделать это. – Dhyanesh

+0

Я считаю, что это возможно, только если вы поместили каждый RichTextBox в другую область фокуса с помощью FocusManager.IsFocusScope, но я был бы обеспокоен тем, что одновременное фокусирование двух элементов управления может смущать конечного пользователя. Другим подходом было бы фактическое обновление цветов или других атрибутов документа для указания выбора. –