我正在使用WPF RichTextbox
。我必须得到RichTextbox
中的所有行。所以我使用for
循环来获取所有行,但RichTextbox
包含大文本内容。这需要太多时间。
那么如何在更短的时间内绕过1000线循环呢?
我已尝试过parallel.for
,但在尝试获取RichTextbox
文字的每一行时都会出现异常。
这是我的代码。
for (Int32 icnt = 0; icnt <= iLineCount; icnt++)
{
LineDetails lnDtls = new LineDetails();
lnDtls.LineText = GetLineText(txtAppendValue.CaretPosition.GetLineStartPosition(icnt));
iCurrentEnd = iCurrentEnd + lnDtls.LineText.Length;
lnDtls.LineLength = iCurrentEnd;
listLines.Add(lnDtls);
}
GetLineText():
String GetLineText(TextPointer TextPointer)
{
tp1 = TextPointer.GetLineStartPosition(0);
if (tp1 == null)
{
return null;
}
else
{
tpNextLine2 = tp1.GetLineStartPosition(1);
if (tr != null)
{
tr = null;
}
if (tpNextLine2 == null)
{
tpNextLine2 = txtAppendValue.Document.ContentEnd;
}
tr = new TextRange(tp1, tpNextLine2);
return tr.Text;
}
}
那么我可以使用LINQ代替for
循环来快速执行吗?
答案 0 :(得分:1)
我不明白为什么需要这么复杂。一些简单的代码行将为您提供富文本框中的所有行。
string text = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd).Text;
text.Replace("\r\n", "\n");
var lines = text.Split(new char[] {'\n'});