none
RichTextBox no muestra el texto con su formato! RRS feed

  • Pregunta

  • Hola comunidad, de antemano le doy las gracias por haber tomado su tiempo en leer y poder responder esta pregunta.

    La pregunta es la sgnte:

    Estoy desarrollando una aplicacion en WPF, y bueno tengo una parte en la cual se escribe un texto dentro de un richtextbox con podibilidad de poner negrita, cursiva, subrayado, viñetas, enumeraciones, etc, bueno el campo en mi BD es un varchar(max), x ejm en mi bd lo que se guarda del richtextbox es esto: Hola me llamo Pedro y tu eres Raquel?, antes y despues del tu eres Raquel?, van 2 cuadraditos, al recuperar en mi clase el valor de contenido es este: "Hola me llamo Pedro y\r\ntu eres Raquel?\r\n"...

    vale decir que a esa partecita le puse formato solo al tu eres Raquel?, pero al mostrarlo en un richtextobox no me muestra con algun formato, la forma que estoy haciendo para mostrar es esta:

    MemoryStream cont = new MemoryStream(ASCIIEncoding.Default.GetBytes(post.contenido));

    richTextBoxContenido.Selection.Load(cont, DataFormats.Rtf);

    Y otra forma que intente fue esta:

    MemoryStream cont = new MemoryStream(ASCIIEncoding.Default.GetBytes(post.contenido));

    TextRange contenido = new TextRange(richTextBoxContenido.Document.ContentStart, richTextBoxContenido.Document.ContentEnd);

     string formato = DataFormats.Rtf;

    contenido.Load(cont, formato);

    De ninguna de las 2 me lo saca con formato, espero me puedan ayudar.

    Tambien intente ponerlo en un DocumentViewer pero no he logrado pasarle el documento.

    Me podrian recomendar cual usar y como podr ahacwer para que me muestre con el formato que se establecio.

     

    Gracias a todos.

    martes, 20 de abril de 2010 14:29

Respuestas

  • Bueno gracias a Bob Bao se logro hacer esto de esta manera:

    Para guardar el contenido del richtextbox que tengamos debemos hacerlo asi:

    MemoryStream cont = new MemoryStream();
                    (new TextRange(richTextBox1.Document.ContentStart, richTextBox1.Document.ContentEnd)).Save(cont, DataFormats.Rtf);
                    post.contenido = ASCIIEncoding.Default.GetString(cont.GetBuffer());

    Y para recuperarlo es de esta manera:

    MemoryStream cont = new MemoryStream(ASCIIEncoding.Default.GetBytes(mi_post.contenido));
                            rtb_verpost.Selection.Load(cont, DataFormats.Rtf);

    richtextbox1 y rtb_verpost son los richtextbox que manejo.

    El campo en mi bd es un varchar max y en la clase es un string.

    Bueno espero haber podido ayudar como dije anteriormente gracias a Bob Bao.

    • Marcado como respuesta xlaptmktm jueves, 22 de abril de 2010 4:32
    jueves, 22 de abril de 2010 4:32