2010-04-08 5 views
6

J'ai une chaîne de caractères/jetons richtext que je voudrais alimenter en une riche zone de texte en code.Comment puis-je transmettre une chaîne rtf à un contrôle 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}"; 

J'ai essayé ceci:

 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); 

il ne fonctionne pas.

quelqu'un peut-il me donner quelques suggestions.

BTW le texte riche vient de sauver de WordPad, ouvrir le fichier avec le bloc-notes et en utilisant le texte pour construire ma chaîne

Répondre

11

Rich a une zone de texte propriété nommée Rtf. Définissez cette propriété sur votre valeur de chaîne. De plus, votre chaîne a un espace supplémentaire en tant que premier caractère. J'ai dû enlever ça avant de voir votre Hello World.

+2

+1 pour remarquer l'espace –

2

L'expansion sur la réponse gbogumil:

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; 
Questions connexes