清除后在RichTextBox中显示数据时出错

时间:2018-04-12 14:44:19

标签: c# wpf richtextbox

我的GUI上有一个RichTextBox,我有两个按钮,一个用于显示数据,另一个用于清除数据。在按钮DISPLAY上,我使用此例程将一些数据显示在RichTextBox中:

Block firstBlock = richTextBox_Console.Document.Blocks.FirstOrDefault();
richTextBox_Console.Document.Blocks.InsertBefore(firstBlock, new Paragraph(new Run("MyFirstLine= " + MyVariable + "\n" )));

string message;
for (int i = 0; i < 6; i++)
{
    message = "";
    message += "Line:" + (i + 1).ToString() + "\n";
    richTextBox_Console.Document.Blocks.InsertBefore(firstBlock, new Paragraph(new Run(message)));
}

在CLEAR上点击,我做this

richTextBox_Console.SelectAll();
richTextBox_Console.Selection.Text = "";

现在,当我再次点击DISPLAY按钮时,在线:

richTextBox_Console.Document.Blocks.InsertBefore(firstBlock, new Paragraph(new Run("MyFirstLine= " + MyVariable + "\n" )));

firstBlocknull,因此该行会抛出此错误:

  

值不能为null。参数名称:nextSibling

知道发生了什么事吗?它可以在第一次显示数据时工作正常,然后再也无法工作。

我也尝试过richTextBox_Console.Document.Blocks.Clear();来清除,但我仍然遇到同样的错误。

2 个答案:

答案 0 :(得分:1)

在代码

之前添加此行
if(!richTextBox_Console.Document.Blocks.Any())richTextBox_Console.Document.Blocks.Add(new Paragraph());

它将检查您的文本中是否有任何块,如果没有 - 它将为您添加一个段落。

此外,您最好将FirstOrDefault()更改为First(),在这种情况下,下次您将知道问题是您没有段落/部分

答案 1 :(得分:1)

您可以像这样实现删除按钮的事件处理程序:

richTextBox_Console.Document.Blocks.Clear();
richTextBox_Console.Document.Blocks.Add(new Paragraph());