【问题标题】:Fastest way to update paragraph in RichTextBox's FlowDocument在 RichTextBox 的 FlowDocument 中更新段落的最快方法
【发布时间】:2015-11-03 17:53:33
【问题描述】:

我会更新 FlowDocument 中的段落(在 RichTextBox 中)。

目前,我每次都使用函数 Clear() 来清空块,然后用我的段落填充 RichTextBox.Document.Blocks。

但是,每次清除和添加我的段落时,速度非常慢,而且为此我损失了很多性能。如何优化这些指令并有效更新 RichTextBox 中的段落?

谢谢

【问题讨论】:

  • 您是否尝试仅替换您要更改的段落对象的内容?
  • 我的问题是,例如,当我从 RichTextBox 中的输入键添加一个字母时,我想(不确定)RichTextBox 在此事件中创建一个新的 FlowDocument(或段落 I具体不知道)内部。它不使用我在后面的代码中使用的相同段落。所以我所做的就是在我自己段落的文本中插入新字母,然后清除richtextbox中的流文档并用我自己的段落填充它以获得好的文本。每一次。我确信有更好的方法(而且更快)。我希望我给你更精确的回答。谢谢

标签: wpf richtextbox flowdocument paragraph


【解决方案1】:

如果我理解正确,我怀疑是段落中的运行在改变而不是段落。

如果您在代码中创建段落/运行,您可能没有设置语言。

如果您有一个未设置语言的运行,并且您在 RichTextBox 中键入,运行将在您键入的位置拆分以创建 3 个运行。

将运行/段落上的语言设置为您的语言环境,例如en-gb 或 en-us

var run = new Run("Test") {Language = XmlLanguage.GetLanguage("en-us") };

如果您现在在运行的中间键入,则不会添加新的运行/段落。

【讨论】:

  • 谢谢!但是设置语言对我没有帮助。当我在 RichTextBox 中键入一个字母时,我看到后面的代码中的关联运行变为空。所以是的,是运行而不是段落正在改变!谢谢
猜你喜欢
  • 1970-01-01
  • 2013-10-27
  • 2010-11-18
  • 2017-01-28
  • 1970-01-01
  • 2015-04-22
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
相关资源
最近更新 更多