Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在RichTextBox上显示工具提示_Wpf_Richtextbox_Tooltip - Fatal编程技术网

Wpf 在RichTextBox上显示工具提示

Wpf 在RichTextBox上显示工具提示,wpf,richtextbox,tooltip,Wpf,Richtextbox,Tooltip,我在WPF窗口上有一个RichTextBox。现在,我想在用户将鼠标移到RichTextBox上时显示工具提示。RichTextBox的内容应取决于鼠标指针下的文本。为此,我应该得到字符的位置,鼠标显示在该位置上 致以最诚挚的问候,托马斯在下面的示例中,工具提示将显示插入符号所在的下一个字符 Xaml: <Window x:Class="Test.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pres

我在WPF窗口上有一个RichTextBox。现在,我想在用户将鼠标移到RichTextBox上时显示工具提示。RichTextBox的内容应取决于鼠标指针下的文本。为此,我应该得到字符的位置,鼠标显示在该位置上


致以最诚挚的问候,托马斯在下面的示例中,工具提示将显示插入符号所在的下一个字符

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>

嗨,本。我需要鼠标光标所在位置的字符。@t.kehl抱歉,不知为什么我错过了那部分。无论如何,使用的方法,您可以编写一个函数,该函数采用鼠标位置并查找该位置的字符。我现在在工作,但如果你找不到解决办法,我会等我在家的时候再做。嗨,本。我没有在空闲的时候做过:void rtb_ToolTipOpeningobject sender,ToolTipEventArgs e{RichTextBox rtb=发送方作为RichTextBox;如果rtb==null返回;var position=rtb.GetPositionFromPointMouse.GetPositionrtb,false;如果position==null返回;var x=rtb.Document.ContentStart.getOffsetPositionPositionPosition;//我现在可以获取位置x处的文本/字符}mmhh-我现在不知道,如何添加此代码以使其更具可读性:-…你认为,这可以工作吗?@t.kehl编辑了我的答案,现在它显示了鼠标位置的字符。
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;
}