cargar un ComboBox con Colores

05/09/2006 - 18:54 por [Juanjo] | Informe spam
Hola grupo:

Es posible "crear", "cargar" un comboBox con colores como el del entorno
del visual studio 2005?como?

Muchas gracias
 

Leer las respuestas

#1 Luis Miguel Blanco
06/09/2006 - 17:43 | Informe spam
Hola Juanjo

Para conseguir lo que comentas, necesitas "dibujar" manualmente los
elementos del ComboBox cuando estos son desplegados.

Debes indicar al control que vas a hacer el dibujo manual asignando el valor
OwnerDrawVariable a la propiedad DrawMode.

A continuación escribes el código para el evento MeasureItem que sirve para
establecer el ancho y alto del elemento a dibujar, y seguidamente escribes el
evento DrawItem, que como indica el nombre, se utiliza para dibujar
manualmente el elemento del combo.

A continuación te acompaño un bloque de código con un ejemplo que utiliza un
combo que tiene 3 elementos, que al ser desplegado, cada uno de ellos se
dibuja con un color de fondo diferente.
//-
private void Form1_Load(object sender, EventArgs e)
{
this.comboBox1.DropDownHeight = 150;
this.comboBox1.DrawMode = DrawMode.OwnerDrawVariable;
}

private void comboBox1_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemHeight = 21;
e.ItemWidth = 200;
}

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();

Color oColor = Color.Empty;
Font oFont = new Font("Comic Sans MS", 8, FontStyle.Bold);

switch (e.Index)
{
case 0:
oColor = Color.Aquamarine;
break;

case 1:
oColor = Color.Yellow;
break;

case 2:
oColor = Color.SkyBlue;
break;
}

Rectangle rect = new Rectangle(e.Bounds.Location, e.Bounds.Size);
e.Graphics.FillRectangle(new SolidBrush(oColor), rect);
e.Graphics.DrawString(this.comboBox1.Items[e.Index].ToString(), oFont,
new SolidBrush(Color.Black), e.Bounds.Location);
}
//-
Espero que te sirva de ayuda
Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"[Juanjo]" wrote:

Hola grupo:

Es posible "crear", "cargar" un comboBox con colores como el del entorno
del visual studio 2005?como?

Muchas gracias



Preguntas similares