unity texto rich para c# string rtf

c# - texto - text unity ui



¿Mejor forma de manipular RichText en C#? (6)

Necesito crear y copiar en el portapapeles algo de RichText con "formateo" estándar como negrita / cursiva, sangrías y similares. La forma en que lo hago ahora parece poco elegante ... Estoy creando un elemento de RichTextBox y aplicando mi formato a través de eso:

RichTextBox rtb = new RichTextBox(); Font boldfont = new Font("Times New Roman", 10, FontStyle.Bold); rtb.Text = "sometext"; rtb.SelectAll() rtb.SelectionFont = boldfont; rtb.SelectionIndent = 12;

Tiene que haber una mejor manera, pero después de unas horas de búsqueda no pude encontrar nada mejor. ¿Algunas ideas?

Editar: RichTextBox (rtb) no se muestra / dibuja en ningún lugar en un formulario. Solo estoy usando el objeto para formatear mi RichText.


Creo que tu técnica es una excelente manera de lograr lo que estás buscando hacer. Sé lo que quieres decir ... parece un poco "sucio" porque estás usando un control de Winforms para algo distinto de lo que estaba destinado, pero simplemente funciona. He usado esta técnica por años. Interesado para ver si alguien más tiene opciones viables.


Es posible que desee suspender el diseño de richtextbox antes de hacer todo eso para evitar un parpadeo innecesario. Ese es uno de los errores comunes que solía hacer que lo hacía parecer "poco elegante"



Podrías crear algunos métodos de extensión de utilidades para hacerlo más ''elegante'' :)

public static RichTextBox Set(this RichTextBox rtb, Font font, string text) { rtb.Text = text; rtb.SelectAll(); rtb.SelectionFont = font; rtb.SelectionIndent = 12; return rtb; }

Y llame así:

someRtb.Set(yourFont, "The Text").AndThenYouCanAddMoreAndCHainThem();

Editar: ahora veo que ni siquiera lo estás mostrando. Hmm, interesante, lo siento, no fue de mucha ayuda para proporcionar una forma Non Rtb.


También debe suspender el diseño de richtextbox justo después de la creación y desecharlo después de su uso.

RichTextBox rtb = new RichTextBox(); rtb.SuspendLayout(); //richtext processing goes here... rtb.Dispose();

Y no sea tímido para usar richtextbox para el procesamiento de texto enriquecido. Microsoft mismo está haciendo esto aquí en este tutorial. :-)


Sé que ha pasado un tiempo, pero echa un vistazo a esta publicación de al convertir rtf a html. Probablemente sea mucho más fácil tener tus cosas en html, manipularlas, luego mostrarlas usando html o convertirlas a rtf.

Convierte Rtf a HTML