Colorear los elementos de un combo

Autor: Dámaso Velázquez Álvarez

Con el siguiente código vamos a poder colorear el fondo de los elementos de un combo.
Supongamos que tenemos un combo llamado cboColor con 9 elementos sin texto. Simplemente queremos tener cada elemento coloreado de un color determinado.

Implementaremos el evento DrawItem del combo de la siguiente manera:

Private Sub cboColor_DrawItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles cmbColor.DrawItem
   Select Case e.Index
   Case 0
      'Blanco
      e.Graphics.FillRectangle(Brushes.White, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
   Case 1
      'azul
      e.Graphics.FillRectangle(Brushes.LightCyan, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
   Case 2
      'amarillo
      e.Graphics.FillRectangle(Brushes.Yellow, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
   Case 3
      'rosa
      e.Graphics.FillRectangle(Brushes.LightPink, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
   Case 4
      'gris
      e.Graphics.FillRectangle(Brushes.LightGray, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
   Case 5
      'naranja
      e.Graphics.FillRectangle(Brushes.Orange, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
   Case 6
      'verde claro
      e.Graphics.FillRectangle(Brushes.LightGreen, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
   Case 7
      'salmón
      e.Graphics.FillRectangle(Brushes.Salmon, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
   Case 8
      'rojo
      e.Graphics.FillRectangle(Brushes.Red, e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)
   End Select
End Sub

La idea es pintar un rectángulo opaco del color determinado, y que esté localizado en la posición exacta del elemento del cómbo. La posición y las dimensiones del ítem las obtenemos mediante e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height.

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

Podría interesarte...

Colorear los elementos de un combo
Tutorial para especificar el color de cada elemento de un combo en un WinForm

Enlaces recomendados