2012-05-14 76 views
13

Quiero mostrar texto en el cuadro de texto en 2 colores, por ejemplo 1 línea roja 2 azul, si uso name.ForeColor = Color.Red; todo el texto cambia de color, pero quiero que cambie solo 1 color de línea.Multi-color TextBox C#

+2

WinForms o WPF? – Tudor

+0

Uso winform. – Wizard

+0

@Tudor ForeColor es una propiedad de formularios de Windows – animaonline

Respuesta

15

Es necesario utilizar un RichTextBox.

A continuación, puede cambiar el texto del texto seleccionando el texto y cambiando el color o la fuente de selección.

richTextBox1.SelectionFont = new Font("Verdana", 12, FontStyle.Bold); 
richTextBox1.SelectionColor = Color.Red; 
36

Utilice un RichTextBox para eso, aquí es un método de extensión por Nathan Baulch

public static class RichTextBoxExtensions 
{ 
    public static void AppendText(this RichTextBox box, string text, Color color) 
    { 
     box.SelectionStart = box.TextLength; 
     box.SelectionLength = 0; 

     box.SelectionColor = color; 
     box.AppendText(text); 
     box.SelectionColor = box.ForeColor; 
    } 
} 

Leer más here

+0

alguna idea de cómo hacerlo con el cuadro de texto? – Wizard

+0

no hay forma de hacer eso con un cuadro de texto wf, tendrá que crear su propio UserControl o utilizar el cuadro de texto RichText ... – animaonline

+0

Ahora estoy estudiando su código 'var userid =" USER0001 "; var message = "Acceso denegado"; var box = new RichTextBox { Dock = DockStyle.Fill, Font = new Fuente ("Courier New", 10) }; box.AppendText ("[" + DateTime.Now.ToShortTimeString() + "]", Color.Red); box.AppendText (""); box.AppendText (userid, Color.Green); box.AppendText (":"); box.AppendText (message, Color.Blue); box.AppendText (Environment.NewLine); new Form {Controls = {box}}. ShowDialog(); 'y no entiende cómo hacerlo, RichTextBox no estará en una nueva forma? – Wizard

0

En primer lugar, los detalles + etiquetas que ha proporcionado no son suficientes - C# no tiene un marco de interfaz de usuario específica, tiene algunos: WPF, WinForms, ASP.NET, Silverlight.

En segundo lugar, no puede hacer esto con un control de cuadro de texto regular en cualquiera de los anteriores. Deberá buscar/crear un control personalizado de interfaz de usuario que tenga un comportamiento diferente o utilizar un control más avanzado, p. un cuadro de texto enriquecido

1

Aquí hay un ejemplo con un Fontdialog y Colordialog.

void TextfarbeToolStripMenuItemClick(object sender, EventArgs e) 
     { 
      colorDialog1.ShowDialog(); 
      richTextBox1.ForeColor = colorDialog1.Color; 
      listBox1.ForeColor = colorDialog1.Color; 
     } 

     void FontsToolStripMenuItemClick(object sender, EventArgs e) 
     { 
      fontDialog1.ShowDialog(); 
      richTextBox1.Font = fontDialog1.Font; 
      listBox1.Font = fontDialog1.Font; 
     } 

     void HintergrundfarbeToolStripMenuItemClick(object sender, EventArgs e) 
     { 
      colorDialog1.ShowDialog(); 
      richTextBox1.BackColor = colorDialog1.Color; 
      listBox1.BackColor = colorDialog1.Color; 
     }