2010-08-13 79 views
0

我在我的应用程序中有两个richtextboxes,一个在另一个下面。当用户在一个richtextbox中开始选择并继续到另一个richtextbox选择时,应该自动移动到第二个richtextbox.is有任何方法来做这种类型的选择。WPF richtextbox选择问题

在此先感谢, dhyanesh

+0

我会使用MouseEnter和MouseLeave来实现此行为 – 2010-08-13 00:45:06

回答

0

你以为你可以使用MouseEnterMouseLeave,但是当鼠标被捕获(因为它是文本选择时),符合市场预期,这些事件不会触发。

来实现你的目标的方法是:

  1. 订阅MouseMove第一RichTextBox的。
  2. MouseMove事件中,检查Mouse.Captured以查看它是否为RichTextBox。
  3. 如果捕捉到鼠标,请使用​​对鼠标的当前位置执行命中测试。从HitTestResult.VisualHit的值开始查看可视树,查看鼠标是否位于当前RichTextBox以外的位置。
  4. 如果鼠标悬停在新的RichTextBox上,请用Mouse.Capture(null)取消鼠标捕获,然后在新的RichTextBox上触发一个MouseLeftButtonDown事件,使其捕获鼠标并开始选择。
+0

它的工作非常感谢你 – Dhyanesh 2010-08-13 05:07:20

+0

我想保留选择多个textbox.is有任何方式来做到这一点。 – Dhyanesh 2010-08-13 06:30:22

+0

我相信只有使用FocusManager.IsFocusScope将每个RichTextBox放在不同的焦点范围内,但我担心允许两个控件一次聚焦可能会让最终用户感到困惑。另一种方法是实际更新文档的颜色或其他属性以指示选择。 – 2010-08-13 18:59:43