【问题标题】:Stackoverflow in Removing Inline from ParagraphStackoverflow 从段落中删除内联
【发布时间】:2012-01-28 11:58:59
【问题描述】:

我在RichTextBox.CaretPosition 的一个段落中添加了许多内联。 当我想删除这样的内联时:

        var para = _rtb.CaretPosition.Paragraph;

        Inline inlineToRemove = para.Inlines.FirstInline;
        if (inlineToRemove != null)
            para.Inlines.Remove(inlineToRemove);

发生错误:StackOverflow

An unhandled exception of type 'System.StackOverflowException' occurred in mscorlib.dll

【问题讨论】:

  • 恐怕你必须提供更多关于你正在做什么的细节。我尝试向 RichTextBox 添加 100000 个内联,然后删除第一个,但没有堆栈溢出。当您遇到堆栈溢出时,调用堆栈窗口中会显示哪些调用?你能不能把SSCCE放在一起?
  • 我正在开发一个标记化的文本框,并为每个标记添加一个内联到richtextbox。每个内联都有一个关闭按钮。当我按下关闭按钮并要删除该内联时,我收到了该错误。
  • 恐怕我们需要更多的信息。至少,我们需要查看更多您的代码。 如果我们无法重现您的堆栈溢出,我们将无法帮助您。
  • 我有类似的异常(算术下溢或下溢)。也许使用调度程序会有所帮助: para.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new Action(() => { Inline inlineToRemove = para.Inlines.FirstInline; if (inlineToRemove != null) para.Inlines.Remove(inlineToRemove); } ));

标签: wpf richtextbox stack-overflow paragraph


【解决方案1】:

之前

para.Inlines.Remove(inlineToRemove);

设置

(inlineToRemove.Child as TokenItem).Content = null;

我不喜欢这个,但它对我有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2014-11-10
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多