Как передать строку RTF в элемент управления richtextbox - PullRequest
6 голосов
/ 08 апреля 2010

У меня есть строка символов / токенов richtext, которую я хотел бы передать в код richtextbox в коде.

string rt  = @" {\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0     Arial;}{\f1\fnil\fprq2\fcharset0 Biondi;}}"+
@"{\colortbl ;\red255\green0\blue0;}"+
@"{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs20\par"+
@"\cf1\f1 hello\cf0\f0  \ul world\par}";

Я пытался это:

      System.IO.MemoryStream strm = new System.IO.MemoryStream();
      byte[] b = Encoding.ASCII.GetBytes(rt);
      strm.BeginRead(b, 0, b.Length, null, null);

      richTextBox1.LoadFile(strm, RichTextBoxStreamType.RichText);

это не сработало.

Может кто-нибудь дать мне несколько предложений.

Кстати, форматированный текст получается после сохранения из WordPad, открытия файла с помощью блокнота и использования текста с помощью in для создания моей строки

Ответы [ 2 ]

12 голосов
/ 08 апреля 2010

Богатое текстовое поле имеет свойство с именем Rtf. Установите это свойство в качестве строкового значения. Кроме того, ваша строка имеет дополнительный пробел в качестве первого символа. Мне пришлось удалить это, прежде чем я увидел твой Hello World.

4 голосов
/ 08 апреля 2010

Расширяя ответ гбумила:

string rt  = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0     Arial;}{\f1\fnil\fprq2\fcharset0 Biondi;}}"+
@"{\colortbl ;\red255\green0\blue0;}"+
@"{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs20\par"+
@"\cf1\f1 hello\cf0\f0  \ul world\par}";

this.richTextBox1.Rtf = rt;
...