Самый быстрый способ обновить абзац в FlowDocument RichTextBox

Я бы обновил абзац в FlowDocument (в RichTextBox).

Сейчас я каждый раз использую функцию Clear() для очистки блоков, а затем заполняю RichTextBox.Document.Blocks своим абзацем.

Но, очищая и добавляя каждый раз мой абзац, это очень медленно, и я потерял много производительности, чтобы сделать это. Как оптимизировать эти инструкции и эффективно обновить абзац в RichTextBox?

Спасибо


person Flo    schedule 11.08.2015    source источник
comment
Вы пытались заменить содержимое только того объекта Paragraph, который хотите изменить?   -  person Panagiotis Kanavos    schedule 11.08.2015
comment
Моя проблема заключается, например, в том, что когда я добавляю букву из клавиши ввода в RichTextBox, я предполагаю (не уверен), что RichTextBox в этом событии создает новый FlowDocument (или абзац, которого я точно не знаю) внутри. Он не использует тот же абзац, который я использовал в коде позади. Итак, что я делаю, так это вставляю новую букву в текст в свой собственный абзац, затем очищаю потоковый документ в richtextbox и заполняю его своим собственным абзацем, чтобы получить хороший текст. Каждый раз. Я уверен, что есть способ лучше (и быстрее). Надеюсь, я дам вам больше точности, чтобы ответить. Спасибо   -  person Flo    schedule 11.08.2015


Ответы (1)


Если я вас правильно понял, я подозреваю, что меняется пробег внутри абзаца, а не абзац.

Если вы создаете абзац/прогоны в коде, возможно, вы не установили язык.

Если у вас есть прогон без установленного языка и вы вводите RichTextBox, прогоны разделяются там, где вы печатаете, чтобы создать 3 прогона.

Установите язык в строке «Выполнить/абзац» на свой язык, например. en-gb или en-us

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

Если вы сейчас наберете текст в середине прогона, новые прогоны/абзацы добавлены не будут.

person Doug    schedule 12.08.2015
comment
Спасибо ! Но установка языка мне не помогает. Когда я набираю букву в RichTextBox, я вижу, что связанный код Run в коде становится нулевым. Так что да, меняется Run, а не Paragraph! Спасибо - person Flo; 18.08.2015