none
Color de DropDownButton de toolstrip cuando paso el mousse sobre icono RRS feed

  • Pregunta

  • Hola de nuevo!!! Tenia una duda simple pero no la encuentro por ningun lado. Tengo en un formulario un ToolStrip en el cual tengo varios DropDownButton que cuando clickeo bajan un desplegable, cada vez que paso el mousse por cada uno de ellos me aparece el fondo azul sobre estos botones y queria cambiarle el color a verde.
    jueves, 3 de diciembre de 2015 14:44

Respuestas

  • Eso es porque dependiendo del tipo de elemento hay que utilizar un método diferente:

        class ExtendedToolStripRendered : ToolStripProfessionalRenderer
        {
    
            protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
            {
                if (e.Item.Selected)
                    e.Graphics.Clear(Color.DarkGreen);
                else
                    base.OnRenderMenuItemBackground(e);
            }
    
            protected override void OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs e)
            {
                if (e.Item.Selected)
                    e.Graphics.Clear(Color.DarkGreen);
                else
                    base.OnRenderMenuItemBackground(e);
            }
    
        }
    


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    viernes, 4 de diciembre de 2015 19:11

Todas las respuestas

  • Necesitas crear una clase ToolStripRenderer personalizada:

        class ExtendedToolStripRendered : ToolStripProfessionalRenderer
        {
    
            protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
            {
                if (e.Item.Selected)
                    e.Graphics.Clear(Color.DarkGreen);
                else
                    base.OnRenderMenuItemBackground(e);
            }
    
        }

    Luego no tienes más que asignarle a la propiedad Renderer del ToolStrip una instancia de la nueva clase:

    toolStrip1.Renderer = new ExtendedToolStripRendered();


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    jueves, 3 de diciembre de 2015 16:03
  • Asier ahi lo probe, en mi solucion creo una clase con :

    class ExtendedToolStripRendered : ToolStripProfessionalRenderer { protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e) { if (e.Item.Selected) e.Graphics.Clear(Color.DarkGreen); else base.OnRenderMenuItemBackground(e); } }

    y luego en el evento load del formulario al toolstrip le hago: 

    y cuando compila la solucion me siguen apareciendo los btones en azul cuando paso el mousse sobre ellos

    toolStrip1.Renderer = new ExtendedToolStripRendered();

    jueves, 3 de diciembre de 2015 16:57
  • ¿Pero son botones u opciones de menú?

    Es decir ¿de qué tipo son los elementos a los que quieres cambiar el color de fondo? ¿ToolStripMenuItem? ¿ToolStripButton?


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    jueves, 3 de diciembre de 2015 18:28
  • Dentro del TooldStrip hay una opcion que es DropDownButton la cual cuando clickeamos se abre un desplegable. Con la solucion que me enviaste anteriormente los botones dentro del desplegable se ven en fondo verde pero los iconos del toolstrip se ven con azul.

    • Editado SJaliff viernes, 4 de diciembre de 2015 14:11
    viernes, 4 de diciembre de 2015 14:07
  • Eso es porque dependiendo del tipo de elemento hay que utilizar un método diferente:

        class ExtendedToolStripRendered : ToolStripProfessionalRenderer
        {
    
            protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
            {
                if (e.Item.Selected)
                    e.Graphics.Clear(Color.DarkGreen);
                else
                    base.OnRenderMenuItemBackground(e);
            }
    
            protected override void OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs e)
            {
                if (e.Item.Selected)
                    e.Graphics.Clear(Color.DarkGreen);
                else
                    base.OnRenderMenuItemBackground(e);
            }
    
        }
    


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    viernes, 4 de diciembre de 2015 19:11
  • Perfecto Asier!!! Muchas gracias!!
    jueves, 10 de diciembre de 2015 15:30