none
Color de un MenuItem pulsado RRS feed

  • Pregunta

  • en la imagen que he subido se puede apreciar que no se ven las letras del menu que he pulsado porque son blancas, se puede hacer algo para que las letras tengan otro color cuando hayas pulsado el menu:

     http://www.uploadfilesystem.com//viewimage.php?file=/imagenes/10/03/08/sIh60868.jpg

    saludos
    lunes, 8 de marzo de 2010 22:56

Todas las respuestas

  • hola

    debes usar la propiedad ForeColor del item del menu
    esta es la que define el color de la fuente

    puedes cambairla en tiempo de diseño, o cuando haces click en el item del menu


    Private Sub mnuFile_Click(....)

      mnuFile.ForeColor = Color.Black

      ' aqui pones el resto de tu codigo

    End Sub


    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 9 de marzo de 2010 1:49
  • a lo mejor mediante codigo se puede,pero en vista de diseño no,si cambio el color me lo cambia tambien para cuando el boton no esta pulsado.saludos
    martes, 9 de marzo de 2010 8:46
  • Buenas Davsol

    Lo que puedes hacer es controlar el evento MouseEnter del elemento del menu para que cuando el raton entre en el, el color de las letras cambie, algo así:

        Private Sub ElementoMenu_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ElementoMenu.MouseEnter
            ElementoMenu.ForeColor = Color.Red
        End Sub
    

    Y también deberías controlar que al salir el ratón vuelva a dejar el texto del color original:

        Private Sub ElementoMenu_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles ElementoMenu.MouseLeave
            ElementoMenu.ForeColor = Color.Black
        End Sub
    Recuerda que debes cambiar ElementoMenu por el nombre del item de tu menú que quieras cambiar.

    Un saludo y espero que te funcione!
    martes, 9 de marzo de 2010 8:56
    Moderador
  • Hola davsol, tienes que controlar los eventos Mouseenter y Mouseleave:
    Revisa este ejemplo:

      private void Form1_Load(object sender, EventArgs e)
            {
                foreach (ToolStripMenuItem t in menuStrip1.Items)
                {
                    
                                   CambiarColor(t.DropDownItems);
                }
            }
            private void CambiarColor(ToolStripItemCollection menu)
            {
                foreach (ToolStripMenuItem m in menu)
                {
                    if (m.HasDropDownItems)
                        CambiarColor(m.DropDownItems);
                    m.MouseEnter += toolStripMenuItem1_MouseEnter;
                    m.MouseLeave += toolStripMenuItem1_MouseLeave;
                }
            }
    
    
    
            private void toolStripMenuItem1_MouseEnter(object sender, EventArgs e)
            {
                ((ToolStripMenuItem)sender).ForeColor = Color.Red;
            }
    
            private void toolStripMenuItem1_MouseLeave(object sender, EventArgs e)
            {
                ((ToolStripMenuItem)sender).ForeColor = Color.Black;
            }


    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    martes, 9 de marzo de 2010 9:00
    Moderador
  • voy a probar,gracias
    martes, 9 de marzo de 2010 9:09
  • Hola Davsol

    ¿Te ha funcionado?

    Un saludo!
    martes, 9 de marzo de 2010 12:49
    Moderador
  • hola Josue, la verdad es que no,porque me salían lineas de codigo con error
    martes, 9 de marzo de 2010 14:06
  • Davsol, que errores te da el codigo?, yo lo probe y no me salio ningun error.

    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    martes, 9 de marzo de 2010 14:08
    Moderador
  • los errores son de que se esperaba fin de la instruccion la mayoría,he copiado tu codigo y he ordenado bien las columnas pero aún así me sale mal
    martes, 9 de marzo de 2010 14:17
  • Hola acabo de hacer una pequeña correcion de una linea que sobraba, pero el resto de codigo me funciona perfectamente.

    Podrias poner tu trozo de codigo para ver que falla?



    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    martes, 9 de marzo de 2010 14:27
    Moderador
  • si ,mira es este:

     Private Sub PartidosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PartidosToolStripMenuItem.Click
             private void Form1_Load(object sender, EventArgs e)
            {foreach (ToolStripMenuItem t in menuStrip1.Items){ CambiarColor(t.DropDownItems);}}
            private void CambiarColor(ToolStripItemCollection menu)
            {foreach (ToolStripMenuItem m in menu){ if (m.HasDropDownItems)CambiarColor(m.DropDownItems);
                    m.MouseEnter += toolStripMenuItem1_MouseEnter;
                    m.MouseLeave += toolStripMenuItem1_MouseLeave;
                }
            }



            private void toolStripMenuItem1_MouseEnter(object sender, EventArgs e)
           {
                ((ToolStripMenuItem)sender).ForeColor = Color.Red;
            }

            private void toolStripMenuItem1_MouseLeave(object sender, EventArgs e)
            {
                ((ToolStripMenuItem)sender).ForeColor = Color.Black;
            }
        End Sub
    martes, 9 de marzo de 2010 14:36
  • Hola Davsol,

    El código que puso jtorrecilla está en  c#, debes convertirlo a vb.net.

    primero, en tu formulario debes tener un método parecido a este:
    (RECUERDA SUSTITUIR FORM1 POR EL NOMBRE DE TU FORMULARIO)
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
    End Sub
    dentro de este manejador debes poner el código que añadirá los manejadores de eventos a los eventos MouseEnter (el ratón entra en el item del menu) y MouseLeave (el ratón sale del item del menu), para ello crea un método recursivo como este:

        Private Sub AddEventosCambioColor(ByVal m As ToolStripItemCollection)
            For Each elemento As ToolStripMenuItem In m
                If elemento.HasDropDownItems Then
                    AddEventosCambioColor(elemento.DropDownItems)
                End If
                AddHandler elemento.MouseEnter, AddressOf EntraRaton_MouseEnter
                AddHandler elemento.MouseLeave, AddressOf SaleRatom_MouseLeave
            Next
        End Sub
    y Dentro del método Form_Load que te indico al principio llama a este método asi:
    (RECUERDA SUSTITUIR MIMENU POR EL NOMBRE DEL CONTROL MENU QUE TIENES EN TU FORMULARIO)

    AddEventosCambioColor(mimenu.DropDownItems)
    Por último tienes que añadir dos métodos que controlen el evento mouseenter y mouseleave:
        Private Sub EntraRaton_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs)
            CType(sender, ToolStripMenuItem).ForeColor = Color.Red
        End Sub
    
        Private Sub SaleRatom_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs)
            CType(sender, ToolStripMenuItem).ForeColor = Color.Black
        End Sub
    Con esto te tiene que funcionar correctamente.

    Un saludo!
    martes, 9 de marzo de 2010 14:38
    Moderador
  • muchas gracias,voy a probar a ver que tal
    martes, 9 de marzo de 2010 14:45
  • Perdon crei que estabas trabajando en c# y por eso te puse el ejemplo en c#
    Para el correcto funcionamiento, y que otros usuarios se puedan beneficiar de la solucion de esta pregunta por favor marca las respuestas que te hayan ayudado como "Respuesta".
    Si la respuesta te ha sido util Votala.
    Mi Blog: Jtorrecilla
    Enlace a Faq de Winforms en Ingles Muy bueno
    martes, 9 de marzo de 2010 14:46
    Moderador
  • no pasa nada
    martes, 9 de marzo de 2010 14:54
  • Hola davsol

    ¿Te ha funcionado bien lo de los menus?

    Un gran saludo!
    jueves, 11 de marzo de 2010 8:40
    Moderador
  • bueno, tu ya viste el proyecto, y la verdad es que me refería a cuando pulsas sobre un menu y se abre un desplegable pero al ser la letra blanca no se aprecia bien,  y la verdad es que si lo cambio luego no se ve bien con el fondo azul.saludos
    jueves, 11 de marzo de 2010 8:55