La Web del Programador: Comunidad de Programadores
 
    Pregunta:  40133 - PROPIEDAD FORECOLOR DE UN LISTBOX
Autor:  Gonzalo Suárez-Llanos Flórez
¿Cómo puede acceder a la propiedad ForeColor de un elemento de un ListBox en C#? La idea es tener un ListBox con ListItem de color diferentes, ya que el siguiente ejemplo pone a todos los elementos del mismo color, sin poder diferenciar por cada elemento.

ListBox1.ForeColor = Color.FromName("#FF0000")

Gracias...

  Respuesta:  Hector Urbina
TextBox1.ForeColor = System.Drawing.Color.Blue

TextBox1.ForeColor = System.Drawing.Color.FromName("Blue")

Mas claro que el Agua

  Respuesta:  Yamil Bracho
Gonzalo, el problema es que no hay ninguna propiedad que directamente te permita cambiar el color de cada item de un Listbox.
Para ello debes usar una tecnica que se llama "ownerdraw" Para ello debes hacer lo siguiente :

1) Colocale a tu Listbox en la propiedad DrawMode a OwnerDrawVariable o lo puedes hacer por codigo en la funcion InitializeComponent con :

lst.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;

2) En la funcion InitializaComponent, agrega un manejador de eventos que va a manejar el color de los items del Listbox

lst.DrawItem += new DrawItemEventHandler(this.DrawItemHandler);

Y ahora simplemente escribes el manejador de eventos

private void DrawItemHandler(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
e.Graphics.DrawString(data[e.Index],
new Font(FontFamily.GenericSansSerif, 14, FontStyle.Bold), new SolidBrush(color[e.Index]), e.Bounds);
}

Espero esto te ayude y saludos