2

WPF リッチテキスト ボックス コントロールを制御するのに問題があります。

私がしたいことは次のとおりです。 データベースからのデータを入力した richTextBox1 という RichTextBox コントロールがあります。

コントロールをクリックしたときに、テキストを 1 行 (つまり、1 つの段落) に表示する必要があります。

私がネット上で見つけたのは、すべての RTB テキストをコピーするコードだけです。

クリックされた行のテキストだけを取得する方法はありますか?

4

3 に答える 3

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);
}

(Justin-Josef の投稿に感謝します 。 mouseover-text.aspx )

于 2009-09-17T08:23:11.173 に答える
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);
}
于 2014-02-19T22:30:57.127 に答える
-1

おっと、文字列を逆の順序で連結しました。これが改訂されたコードです... :) オハッド。

   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);


    }
于 2009-09-17T09:08:38.570 に答える