【问题标题】:Paragraph shows as child of another element even after RichTextbox clear即使在 RichTextbox 清除后,段落仍显示为另一个元素的子元素
【发布时间】:2012-09-25 15:29:04
【问题描述】:

我的页面上有两个 RichTextbox。我将它们用作 Book 界面。有两个按钮可以前进和后退。

向前遍历页面可以正常工作。但是一旦我回击,VS2010 就会抛出异常

Element is already the child of another element.

这是我在 RichTextbox 中添加的段落。即使我在用新数据淹没它们之前清除了两个 RichTextbox,也会发生这种情况。

我的代码如下。我错过了什么?

TxtBlobLeft.Blocks.Clear();
        TxtBlobRight.Blocks.Clear();


        foreach (Paragraph item in pagesStack[count].paras)
        {
            TxtBlobLeft.Blocks.Add(item); //Throws exception here
        }


        foreach (Paragraph item in pagesStack[count + 1].paras)
        {
            TxtBlobRight.Blocks.Add(item);
        }

注意:pagesStack 是一个以 Paras(即 List)为属性的自定义 Object。

【问题讨论】:

  • 我不是 RichTextbox 控件方面的专家,因此我不确定您的某些属性。您是否需要更全面地解释自定义对象?我猜 TxtBlobLeft 是一个 RichTextbox,但我没有找到 Blocks 属性或了解您如何添加段落类型的项目。尽管如此,您似乎在段落对象中有对富文本框的引用,在您返回并再次添加之前需要将其删除。
  • 是的。 TxtBlobLeft 是 RichTextbox。是的,显然 TxtBlobLeft.Blocks.Clear() 不会删除元素。
  • 我遇到了类似的问题。我认为这是 RTB 中的一个错误。
  • 我的解决方法是每次都重新创建段落。

标签: c# silverlight richtextbox silverlight-5.0 paragraph


【解决方案1】:

似乎 Clear 不会删除对 RTB 的 Paragraphs 的父引用。我使用以下 forach 循环为 Clear 创建了一个新方法来删除所有项目。

foreach (Paragraph item in paras)
        {
            Page1.Blocks.Remove(item);
        }

paras 是我之前添加到 RTB 的段落列表。

【讨论】:

    【解决方案2】:

    当你进入循环时,你能在调试器中检查项目的父项是什么吗?

    【讨论】:

    • 父级是 RichTextbox 本身。当我清除元素时它不会被删除。
    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 2017-03-09
    • 2020-11-27
    • 2011-09-20
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多