双击时如何从richtextbox中获取单个段落文本

时间:2009-09-16 20:53:52

标签: richtextbox paragraph

我在控制WPF richtextbox控件方面遇到了一些麻烦。

我想要的是如下: 我有一个名为richTextBox1的RichTextBox控件,我用数据库填充了数据。

单击控件时,我需要将文本放在一行(意思是 - 一个段落)。

我在网上找到的只是一个复制所有RTB文本的代码。

如何获取单击行中的文本的任何想法?

3 个答案:

答案 0 :(得分:2)

我进行了严肃的网络挖掘,这是一个有效的解决方案。

private void richTextBox1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
  TextPointer t = richTextBox1.GetPositionFromPoint(e.GetPosition(richTextBox1), true);

  string textAfterCursor  = t.GetTextInRun(LogicalDirection.Forward);
  string textBeforeCursor = t.GetTextInRun(LogicalDirection.Backward);

  string FullParagraphText = textBeforeCursor+textAfterCursor;
  MessageBox.Show(FullParagraphText);
}

(感谢贾斯汀 - 约瑟夫的帖子: http://blogs.microsoft.co.il/blogs/justinangel/archive/2008/01/29/tapuz-net-getting-wpf-s-flowdocument-and-flowdoucmentreader-mouseover-text.aspx

答案 1 :(得分:0)

以下代码是正确的:

private void richTextBox1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    TextPointer tp = richTextBox1.GetPositionFromPoint(e.GetPosition(richTextBox1), true);

    TextPointer line_start = tp.GetLineStartPosition(0);
    var nextStart = pos.GetLineStartPosition(1);
    TextPointer lineEnd = (nextStart != null ? nextStart : pos.DocumentEnd).GetInsertionPosition(LogicalDirection.Backward);

    TextRange tr = new TextRange(line_start, lineEnd);
    string line = tr.Text;
    MessageBox.Show(line);
}

答案 2 :(得分:-1)

OOPS,我以相反的顺序汇总了字符串。 这是修改后的代码...... :) 辖。

   private void richTextBox1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        TextPointer t = richTextBox1.GetPositionFromPoint(e.GetPosition(richTextBox1), true);

        string textAfterCursor  = t.GetTextInRun(LogicalDirection.Forward);
        string textBeforeCursor = t.GetTextInRun(LogicalDirection.Backward);

        string FullParagraphText = textBeforeCursor+textAfterCursor;
        MessageBox.Show(FullParagraphText);


    }