Marc Rubiño

ASP.NET, C#, AJAX.NET, JavaScript, etc.

DropDownList Color Picker

Quien no ha necesitado alguna vez poder echar mano de algún control para poder mostrar los colores del sistema y que los usuarios puedan personalizar su entorno.

Pues hoy vamos a retocar la presentación de un DropdonwList para mostrar el color de fondo con el color del registro.

Nuestro control se mostrara tal que así:

 

Para realizar esto solo necesitaremos un método.

private void CargarColores( DropDownList ddl )

    {

        int index = -1;

        if (ddl.SelectedIndex > 0)

            index = ddl.SelectedIndex;

 

        //Inicializamos los colores y mostramos el mensaje de seleccionar color.

        ddl.Items.Clear();

        ddl.Items.Add("Color...");

 

        foreach (int pos in Enum.GetValues(typeof(System.Drawing.KnownColor)))

        {

            string strnColor = Enum.GetName(typeof(System.Drawing.KnownColor), pos);

            System.Drawing.Color color = System.Drawing.Color.FromName(strnColor);

 

            if (!color.IsSystemColor)

            {

                ListItem item = new ListItem(color.Name, pos.ToString());

                item.Attributes.CssStyle.Add(HtmlTextWriterStyle.BackgroundColor, color.Name);

                ddl.Items.Add(item);

            }

        }

 

        //Si tenia indice lo seleccionamos.

        if (index > 0)

            ddl.SelectedIndex = index;

    }

Para obtener los colores del sistema contamos con la enumeración System.Drawing.KnownColor el cual lo recorreremos para obtener un objeto System.Drawing.Color  y poderlo utilizar para generar los items del Dropdownlist .

foreach (int pos in Enum.GetValues(typeof(System.Drawing.KnownColor)))

Para que solo nos muestre los colores compatibles y no los de los controles del sistema  if (!color.IsSystemColor).

Finalmente crearemos el Item y le añadiremos el estilo adecuado para mostrar el color de fondo.

item.Attributes.CssStyle.Add(HtmlTextWriterStyle.BackgroundColor, color.Name);

Para que podáis jugar un poco con la pruebas he creado un proyecto que podréis descargar.

 

Proyecto:   DropDownList Color Picker

Espero que sea de utilidad.

CrossPosting to http://lonetcamp.com

 

Posted: 12/12/2007 23:58 por Marc Rubiño | con 6 comment(s)
Archivado en: ,
Comparte este post:

Comentarios

José A. Fernández ha opinado:

Muy bueno Marc..! buen "tip"

Yo estaba utilizando un codigo en js que me despliega al viejo estilo de winform un colorpicker, y lo encapsule en un webcontrol...

Tambien se podria utilizar este componente

developer.yahoo.com/.../colorpicker

Saludos.

# December 13, 2007 2:08 PM

Marc Rubiño ha opinado:

Gracias José A. Fernández ;-)

Muy bueno ese control, en este tip no nos costaría mucho extender el control DropDownList y añadirle esta utilidad para reutilizarlo en nuestros proyectos.

Saludos.

# December 13, 2007 4:19 PM

Luis ha opinado:

No he podido bajar tu archivo para probarlo, puedes checar porque?? porfavor.

Gracias.

Mi usuario es luismiqui2008

# June 3, 2008 6:47 PM

Marc Rubiño ha opinado:

NO parece que este mal, si continuas teniendo problemas me lo comentas, que te lo envío por mail.

Saludos.

# June 5, 2008 9:50 PM

Rafael ha opinado:

uenas. saludos

quisiera descargar el site pero me dice al unirme que el administrador a deshabilitado el registro de nuevos usuarios.

# October 3, 2009 12:05 AM

richof ha opinado:

Excelente aporte

# August 7, 2010 1:23 AM