Hacer un texto específico en Boldefaced en un TextBox

Hola, actualmente tengo un texbox que imprime información para el usuario cuando presionan diferentes botones. Me preguntaba si había alguna forma de poner en negrita solo algunos de mis textos, mientras que el rest no.

He intentado lo siguiente:

textBox1.FontWeight = FontWeights.UltraBold; textBox1.Text. = ("Your Name: " ); TextBox1.FontWeight = FontWeights.Regular; textBox1.Text += (nameVar); 

El único problema es que el uso de esta forma hará que todo sea negrita o nada. ¿Hay alguna forma de hacer esto? Estoy usando el proyecto WPF en C #

Cualquier comentario o sugerencia es apreciada. ¡Gracias!

EDITAR: Así que ahora estoy tratando de hacer el cuadro de RichText que todos sugirieron, pero parece que no puedo hacer que aparezca nada en él:

 // Create a simple FlowDocument to serve as the content input for the construtor. FlowDocument flowDoc = new FlowDocument(new Paragraph(new Run("Simple FlowDocument"))); // After this constructor is called, the new RichTextBox rtb will contain flowDoc. RichTextBox rtb = new RichTextBox(flowDoc); 

rtb es el nombre de mi richtextbox que creé en mi wpf

Gracias

use un RichTextBox, debajo de un método que he escrito para este problema, espero que ayude 😉

 ///  /// This method highlights the assigned text with the specified color. ///  /// The text to be marked. /// The new Backgroundcolor. /// The RichTextBox. /// The zero-based starting caracter position. public static void ChangeTextcolor(string textToMark, Color color, RichTextBox richTextBox, int startIndex) { if (startIndex < 0 || startIndex > textToMark.Length-1) startIndex = 0; System.Drawing.Font newFont = new Font("Verdana", 10f, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 178, false); try { foreach (string line in richTextBox.Lines) { if (line.Contains(textToMark)) { richTextBox.Select(startIndex, line.Length); richTextBox.SelectionBackColor = color; } startIndex += line.Length +1; } } catch { } } 

Puede usar TextBlock con otros TextBlock o Run s inside:

  normal text bold text more normal text more bold text  

Tendrá que usar un RichTextBox para lograr esto:

    Your Name:     

Pero, ¿por qué quieres que “Tu nombre” sea editable? Seguramente lo querrías como una etiqueta separada, de solo lectura.

     

Un TextBox regular solo admite la configuración de todo o nada de tales propiedades estilísticas. Sin embargo, es posible que desee buscar en RichTextBox , no puede simplemente especificar un conjunto de valores para una propiedad de Text de la manera que lo ha intentado; deberá trabajar con un FlowDocument para construir su cuerpo de texto a través de la propiedad del Document .

Para obtener una descripción general del trabajo con un FlowDocument y algunos ejemplos, dé una lectura .

Eche un vistazo al Control RichTextBox básicamente funciona igual que el TextBox pero permite una mayor personalización y toma, por supuesto, texto enriquecido que permite el formateo parcial.

Tomando el excelente ejemplo de jwillmer, hice algunos ajustes porque estaba coloreando toda la línea de error para mí:

  public static void ChangeTextcolor(string textToMark, Color color, RichTextBox richTextBox) { int startIndex = 0; string text = richTextBox.Text; startIndex = text.IndexOf(textToMark); System.Drawing.Font newFont = new Font("Verdana", 10f, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 178, false); try { foreach (string line in richTextBox.Lines) { if (line.Contains(textToMark)) { richTextBox.Select(startIndex, textToMark.Length); richTextBox.SelectionColor = color; richTextBox.SelectionFont = newFont; } } } catch{ } } 

Además, agregué tags únicas antes y después del texto para colorear para obtener el texto, luego las eliminé.

La respuesta de jwillmer tuvo algunos errores para mí. Estos se resolvieron añadiendo:

 using System.Drawing; 

y luego cambiando las entradas a:

 public static void ChangeTextcolor(string textToMark, System.Drawing.Color color, System.Windows.Forms.RichTextBox richTextBox, int startIndex) 

Esto fue porque mi código buscaba System.Windows.Controls.RichTextbox no Windows.Forums.RichTextBox . Y System.Windows.Media.Color no System.Drawing.Color