WPF リッチテキスト ボックス コントロールを制御するのに問題があります。
私がしたいことは次のとおりです。 データベースからのデータを入力した richTextBox1 という RichTextBox コントロールがあります。
コントロールをクリックしたときに、テキストを 1 行 (つまり、1 つの段落) に表示する必要があります。
私がネット上で見つけたのは、すべての RTB テキストをコピーするコードだけです。
クリックされた行のテキストだけを取得する方法はありますか?
WPF リッチテキスト ボックス コントロールを制御するのに問題があります。
私がしたいことは次のとおりです。 データベースからのデータを入力した richTextBox1 という RichTextBox コントロールがあります。
コントロールをクリックしたときに、テキストを 1 行 (つまり、1 つの段落) に表示する必要があります。
私がネット上で見つけたのは、すべての RTB テキストをコピーするコードだけです。
クリックされた行のテキストだけを取得する方法はありますか?
私は真剣にウェブを掘り下げましたが、ここに実用的な解決策があります。
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 )
次のコードは正しいです。
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);
}
おっと、文字列を逆の順序で連結しました。これが改訂されたコードです... :) オハッド。
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);
}