{"id":171,"date":"2011-01-29T16:48:53","date_gmt":"2011-01-29T21:48:53","guid":{"rendered":"http:\/\/sergiob.org\/wordpress\/?p=171"},"modified":"2011-01-29T16:48:53","modified_gmt":"2011-01-29T21:48:53","slug":"poniendo-colores-de-fondo-diferentes-a-diferentes-elementos-de-un-combobox","status":"publish","type":"post","link":"https:\/\/blog.sergiob.org\/?p=171","title":{"rendered":"Poniendo colores de fondo diferentes a diferentes elementos de un ComboBox"},"content":{"rendered":"<p>Los comboBox son un control que permite seleccionar uno (y solo uno) de una lista de elementos. Algunos lenguajes los nombran dropDownBox, en HTMl es una etiqueta SELECT, etc.<\/p>\n<p>En la familia .NET, no existe forma &#8220;sencilla&#8221; (objeto.propiedad) de cambiar el color de fondo para diferentes elementos. Pero con un poquito de investigaci\u00f3n, descubr\u00ed que es posible redefiniendo el m\u00e9todo que se encarga de dibujar cada elemento de la lista, en el control. Esto se logra:<\/p>\n<p>1. Modificando la propiedad <strong>DrawMode<\/strong> del control, de &#8220;Normal&#8221; a &#8220;OwnerDrawFixed&#8221; u &#8220;OwnerDrawVariable&#8221; (este \u00faltimo es \u00fatil si se quiere modificar el tama\u00f1o de los elementos, de otra forma <em>Fixed<\/em> nos funciona perfecto).<\/p>\n<p>2. Agregando un m\u00e9todo al evento <strong>DrawItem<\/strong> del control.<\/p>\n<p>3. Poniendo en ese m\u00e9todo algo como:<\/p>\n<p>        <code>private void <control>_DrawItem(object sender, DrawItemEventArgs e)<br \/>\n        {<br \/>\n            e.DrawBackground();<br \/>\n            Graphics g = e.Graphics;<br \/>\n            switch (<algo>)<br \/>\n            {<br \/>\n                case 0:<br \/>\n                    g.FillRectangle(new SolidBrush(Color.LightGreen), e.Bounds);<br \/>\n                    break;<br \/>\n                case 4:<br \/>\n                    g.FillRectangle(new SolidBrush(Color.LightCoral), e.Bounds);<br \/>\n                    break;<br \/>\n                case 8:<br \/>\n                    g.FillRectangle(new SolidBrush(Color.LightYellow), e.Bounds);<br \/>\n                    break;<br \/>\n                case 12:<br \/>\n                    g.FillRectangle(new SolidBrush(Color.LightBlue), e.Bounds);<br \/>\n                    break;<br \/>\n                default:<br \/>\n                    g.FillRectangle(new SolidBrush(Color.LightGray), e.Bounds);<br \/>\n                    break;<br \/>\n            }<br \/>\n            string text = ((ComboBox)sender).Items[e.Index].ToString();<br \/>\n            Brush brush = Brushes.Black;<br \/>\n            e.Graphics.DrawString(text, ((Control)sender).Font, brush, e.Bounds.X, e.Bounds.Y);<br \/>\n            e.DrawFocusRectangle();<br \/>\n        }<\/code><\/p>\n<p>\ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los comboBox son un control que permite seleccionar uno (y solo uno) de una lista de elementos. Algunos lenguajes los nombran dropDownBox, en HTMl es una etiqueta SELECT, etc. En la familia .NET, no existe forma &#8220;sencilla&#8221; (objeto.propiedad) de cambiar el color de fondo para diferentes elementos. Pero con un poquito de investigaci\u00f3n, descubr\u00ed que &hellip; <a href=\"https:\/\/blog.sergiob.org\/?p=171\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Poniendo colores de fondo diferentes a diferentes elementos de un ComboBox&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,12],"tags":[38,65,119],"class_list":["post-171","post","type-post","status-publish","format-standard","hentry","category-c","category-geek","tag-c-2","tag-hacking-lite","tag-supergeek"],"_links":{"self":[{"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/posts\/171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=171"}],"version-history":[{"count":0,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=\/wp\/v2\/posts\/171\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.sergiob.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}