从富文本框中读取文本行

时间:2014-06-09 19:20:01

标签: c# wpf

我正在为自己制作一个小应用程序,它根据在表单上输入几个富文本框的文本连接一些语句。

一个文本框可能有10-20行文本,每行都是它自己的单独条目,所以我需要能够逐行阅读文本。

然而,在研究WPF时,我只在网上看到一条关于阅读文本的声明,它从头到尾阅读了该框的内容。我想以某种方式循环它或逐行分开。

根据MSDN,要将WPF富文本框中的文本提取为字符串,您需要使用:

string StringFromRichTextBox(RichTextBox rtb)
{
    TextRange textRange = new TextRange(
      // TextPointer to the start of content in the RichTextBox.
      rtb.Document.ContentStart, 
      // TextPointer to the end of content in the RichTextBox.
      rtb.Document.ContentEnd
    );

    // The Text property on a TextRange object returns a string 
    // representing the plain text content of the TextRange. 
    return textRange.Text;
}

但是,如果您要查看我的富文本框,您会看到里面的文本是值列表,因此,例如,一个框可能如下所示:

000423523

324

93489290099

823342342

0003242342

44400298889

我希望能够在RichTextBox内逐行读取这些值,但在WPF中,似乎不是richtextbox1.Lines选项。

3 个答案:

答案 0 :(得分:1)

您可以使用String.Split()方法按换行符分割RichTextBox文本,并从结果集中排除空行,​​例如:

String[] lines = 
        StringFromRichTextBox(rtb).Split(new[]{Environment.NewLine}
                                          , StringSplitOptions.RemoveEmptyEntries);

foreach (var line in lines)
{
    MessageBox.Show(line);
}

答案 1 :(得分:0)

很抱歉为了简洁,但是如

那样简单
var lines = richTextBox1.Text.Split('\n');

答案 2 :(得分:0)

要读取WPF RichTextBox的行,可以使用以下代码。

TextRange textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd); 
string[] rtbLines = textRange.Text.Split(Environment.NewLine);
foreach(line in rtbLines)
{
    //do something with line
}

对于此特定代码,您将需要使用以下库

using System.Windows.Documents;