Colorear los elementos de un combo

Con este código vamos a poder colorear el fondo de los elementos de un objeto de la clase ComboBox.

Supongamos un objeto llamado cmbEjemplo, de la clase ComboBox, con 3 ítems, y cada uno tendrá un color diferente. En el ejemplo se va a mantener el texto de cada uno de los ítems.

Tenemos que programar el evento DrawItem del objeto cmbEjemplo de la siguiente manera:

private void cmbEjemplo_DrawItem(object sender, DrawItemEventArgs e)
{
   switch (e.Index)
   {
      case 0:
         e.Graphics.FillRectangle(Brushes.Red, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
         e.Graphics.DrawString(cmbEjemplo.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds);
         break;
      case 1:
         e.Graphics.FillRectangle(Brushes.Green, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
         e.Graphics.DrawString(cmbEjemplo.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds);
         break;
      case 2:
         e.Graphics.FillRectangle(Brushes.Blue, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
         e.Graphics.DrawString(cmbEjemplo.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds);
         break;
   }
}

Nota: Debemos fijar la propiedad DrawMode del combo al valor OwnerDrawVariable.

Quizá te interese...
Deja un comentario...
Suscribirme
Notificación de
guest
0 Comentarios
Comentarios en línea
Ver todos los comentarios