RichTextBox теряет форматирование

#c# #.net #formatting #richtextbox

#c# #.net #форматирование #richtextbox

Вопрос:

Я пытаюсь создать динамическую коллекцию RichTextBox, в которую пользователи могут добавлять несколько полей, редактировать их и сохранять в БД.

Случай 1 (единственный и неповторимый)

  • Вставка данных RTF из документа wordpad в RTB-элемент управления.
  • Форматирование такое, каким оно должно быть:

    {rtf1ansiansicpg1252deff0deflang1044{fonttbl{f0fnilfcharset0 Times New Roman;}{f1fnilfcharset0 Microsoft без засечек;}}r nviewkind4uc1 pardlang20f0fs40 Втуп?lang1044f1fs17parrn}r n

  • Сохранение в DataSet (тип данных Байт []), преобразование следующим образом:
     public Byte[] toByteArray(string str)
    {
        System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
        return encoding.GetBytes(str);
    }
     
  • Загрузка из DataSet — создание новых экземпляров RichText-блоков. Преобразование, подобное этому:
     public string fromByteArray(Byte[] bytes)
    {
        System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
        return enc.GetString(bytes);
    }
     
  • Загрузка из набора данных — применение данных, которые я сохранил, к свойству Rtf нового RTB.
    Свойство Rtf по-прежнему остается таким, каким оно должно быть.
  • Загрузка элемента управления — форматирование заканчивается следующим образом:

    {rtf1ansiansicpg1252deff0deflang1044{fonttbl{f0fnilfcharset0 Microsoft без засечек;}}r nviewkind4uc1 pardlang20f0fs17 Втуп?lang1044parr n}r n

В заключение — вставка RTF в элемент управления работает нормально, но загрузка тех же самых RTF-данных в «незагруженный» RTB, похоже, завершается неудачей.

Будет ли элемент управления RichTextBox применять какое-либо автоматическое форматирование к RTF, если свойство установлено перед визуальной загрузкой компонента?

Вероятно, есть простое решение этой проблемы.. Есть идеи?

Комментарии:

1. При перезагрузке присваивайте свойство Rtf, а не свойство Text. Хе-хе.

2. Вы опубликовали код кодировки, кажется, все в порядке. Проблема, вероятно, заключается в интерфейсе Db и / или RTB.

3. В дополнение к комментарию Хенка. Возможно, вы захотите изменить ASCII-кодировку на ту же кодировку, которую вы используете в БД

4. Спасибо — я устанавливаю Rtf-свойство. Если бы я установил текстовое свойство, которое я обнаружил, я бы увидел rtf-код в своем компоненте. Суть проблемы не связана с БД или кодировкой — rtf заканчивается другим шрифтом и совершенно другим форматированием.