shaneapp Ответов: 3

Преобразование текста в RichTextFormat


Это решение, а не вопрос.

Я нигде не нашел упоминания об этом, поэтому в конце концов придумал свое собственное решение. Достаточно назойливо, richtextbox не позволяют прямым текстом в richtextbox элемент.Собственность в формате RTF. Таким образом, даже помещение значения из richtextbox.RTF в другое поле, а затем размещение этого содержимого обратно в richtextbox.RTF не работает.

Вот код преобразования (что-то вроде обходного пути), который преобразует обычный текст в формат richtext:

Private Function ConvertTextToRTF(ByVal RTFtext As String) As String
      Dim data_object As New DataObject
      data_object.SetData(DataFormats.Rtf, RTFtext)
      Return data_object.GetData(DataFormats.Rtf)
End Function


Используйте следующим образом:
Dim text as string = "Hello World"
richtextbox.RTF = ConvertTextToRTF(text)

Henry Minute

Если вы не задаете вопрос, то, пожалуйста, не пишите на этом форуме.

Здесь, в проекте Code, есть форум советов/трюков, который является правильным местом для публикации подобных вещей.

Вы найдете его здесь: http://www.codeproject.com/Tips/post.aspx

shaneapp

Извините, извините...первый раз, когда я написал и просто хотел быстро получить это решение (занят в данный момент)

3 Ответов

Рейтинг:
28

Nish Nishant

Ладно, я не понимаю. Зачем использовать RTF свойство для обычного текста? Почему бы не использовать Text собственность?

richTextBox1.Text = "Plain text";


Sergey Alexandrovich Kryukov

Мой 5-й, я думаю, что это все, что нужно ОП.
--СА

Nish Nishant

Да, я думаю, что он слишком много думает об этом и ищет сложное решение, когда существует простое.

Nish Nishant

Спасибо, СА.

Abhinav S

См. мои комментарии ниже. :)

Espen Harlinn

Красиво и просто :)

shaneapp

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

Рейтинг:
1

smhiker

I tried the solution posted by 'shaneapp', but I never got it to work, I even Copied the Code directly, but when I tried to Save the File, it would give me an "Invalid file format" error.
After experimenting, I stumbled across this very easy solution that works:

<pre>   Dim text As String = "Scott"
        ' By doing SelectedText - it converts it to RichTextFormat ...
        '' (As you will be able to see if you Open the file ...
        '' generated below - it contains the rtf format codes.
        RichTextBox1.SelectedText = text
        RichTextBox1.SaveFile("C:\Test\test1.rtf")


Dave Kreskowiak

Во-первых, вы опубликовали это как решение вопроса пятилетней давности. НЕ ДЕЛАЙ ЭТОГО! Вместо этого опубликуйте его как Совет/трюк, как это было описано пять лет назад в "shaneapp".

Во-вторых, его "решение" - это вовсе не решение какой-либо проблемы.

Кроме того, ваше "решение" на самом деле тоже не является решением, поскольку это в значительной степени здравый смысл. Просто прочитав документацию по элементу управления RichTextBox, вы бы поняли это.

Рейтинг:
0

Abhinav S

Возможно, вам придется понять некоторые различия между richtext и plain text.
Форматированный текст.

Rich text использует только 8-битный формат, который позволяет ему использовать только символы юникода. Однако escape-последовательности Для, например, \u подскажут конвертеру, что делать.

Чтобы преобразовать обычный текст в RTF, вам нужно будет включить теги approrpriate rtf в обычный текст, чтобы они работали в rtf.

Видеть здесь[^] для более детального анализа.


Sergey Alexandrovich Kryukov

Да, очень важно! Мой 5.
(Очень хорошо, что вы так отвечаете на мои комментарии, иначе я бы не заметил таких ответов, так как не получил бы уведомления по электронной почте, надеюсь, другие тоже это понимают. Спасибо.)
--СА

Sergey Alexandrovich Kryukov

То, что вы упомянули, на самом деле является существенной проблемой жесткого наследия до Unicode. Я помню, что мне было трудно решить очень сложную задачу создания ANSI-ориентированного Borland VCL с Unicode; большая часть ее была связана с RichText: как получить текст Unicode.
--СА

Abhinav S

Да. Я помню, что мне было трудно получить оригинальный текст (из rtf), когда я хотел сделать это без использования обходного пути, подобного тому, который использовал OP.

В конце концов я сдался и воспользовался обходным путем :).

Sergey Alexandrovich Kryukov

Но я ее разрешил (будет трудно вспомнить подробности). Статья была напечатана в "The Delphi Magazine" (Web and on paper magazine) и пользовалась большой популярностью, а я пользовался хорошей авторской оплатой :-)
--СА

Abhinav S

Да. Я действительно получил эту идею от тебя. :)

Sergey Alexandrovich Kryukov

Простите, это я вам подсказал? Не помню, где именно...
--СА

Abhinav S

Не напрямую. Но вы ответили на некоторые мои посты с просьбой взглянуть на ваш ответ. Вот как я это понял. :)

Sergey Alexandrovich Kryukov

Таких случаев много, не помнишь, о чем говоришь, радуешься, если тебе что-то помогло.
Спасибо.
--СА

Abhinav S

Такого "единственного" случая не было. Это вообще навело меня на мысль.

Espen Harlinn

Хорошая точка :)

Abhinav S

Спасибо, Эспен.