Показать подсказку на RichTextBox - PullRequest
0 голосов
/ 08 мая 2011

У меня есть RichTextBox в окне WPF.Теперь я хочу показать всплывающую подсказку, когда пользователь наводит указатель мыши на RichTextBox.Содержимое RichTextBox должно зависеть от текста, который находится под указателем мыши.Для этого я должен получить положение символа, на котором мышь показывает.

С наилучшими пожеланиями, Томас

1 Ответ

1 голос
/ 09 мая 2011

В следующем примере во всплывающей подсказке будет показан следующий символ, где находится курсор.

Xaml:

<Window x:Class="Test.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
  <RichTextBox ToolTipOpening="rtb_ToolTipOpening" ToolTip="" />
</Window>

Код-позади:

void rtb_ToolTipOpening(object sender, ToolTipEventArgs e)
{
  RichTextBox rtb = sender as RichTextBox;

  if (rtb == null)
    return;

  TextPointer position = rtb.GetPositionFromPoint(Mouse.GetPosition(rtb), false);
  if (position == null)
    return;

  int offset = rtb.Document.ContentStart.GetOffsetToPosition(position);

  position = rtb.Document.ContentStart.GetPositionAtOffset(offset);
  if (position == null)
    return;

  string text = position.GetTextInRun(LogicalDirection.Forward);

  rtb.ToolTip = !string.IsNullOrEmpty(text) ? text.Substring(0, 1) : string.Empty;
}
...