【问题标题】:Error when displaying data in RichTextBox after clearing it清除后在 RichTextBox 中显示数据时出错
【发布时间】:2018-04-12 22:54:59
【问题描述】:

我的 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)));
}

点击清除,我会this

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

现在当我再次点击“显示”按钮时,在线:

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

firstBlocknull 所以该行会抛出这个错误:

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

知道发生了什么吗?第一次显示数据可以正常工作,然后永远不会工作。

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

【问题讨论】:

    标签: c# wpf richtextbox


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在你的代码前添加这一行

      if(!richTextBox_Console.Document.Blocks.Any())richTextBox_Console.Document.Blocks.Add(new Paragraph());
      

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

      另外,你最好将 FirstOrDefault() 更改为 First(),这样下次你就会知道问题是你没有段落/部分

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-25
        相关资源
        最近更新 更多