【问题标题】:WPF richtextbox selection problemWPF富文本框选择问题
【发布时间】:2011-03-29 05:39:12
【问题描述】:

我的应用程序中有两个富文本框,一个在另一个之下。当用户在一个富文本框中开始选择并继续到另一个富文本框时,选择应该自动移动到第二个富文本框。有没有办法进行这种类型的选择。

提前致谢, 昙花一现

【问题讨论】:

  • 我会使用 MouseEnter 和 MouseLeave 来实现这个行为

标签: wpf richtextbox


【解决方案1】:

您可能认为可以使用 MouseEnterMouseLeave,但是当鼠标被捕获时(就像在文本选择期间一样),这些事件不会按预期触发。

实现目标的方法是:

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

【讨论】:

  • 我想保留多个文本框的选择。有没有办法做到这一点。
  • 我相信只有使用 FocusManager.IsFocusScope 将每个 RichTextBox 放在不同的焦点范围内才有可能,但我担心允许同时聚焦两个控件可能会混淆到最后-用户。另一种方法是实际更新文档的颜色或其他属性以指示选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
  • 1970-01-01
相关资源
最近更新 更多