我的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" )));
firstBlock
为null
,因此该行会抛出此错误:
值不能为null。参数名称:nextSibling
知道发生了什么事吗?它可以在第一次显示数据时工作正常,然后再也无法工作。
我也尝试过richTextBox_Console.Document.Blocks.Clear();
来清除,但我仍然遇到同样的错误。
答案 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());