none
Aplicarle OnMauseMove a varios paneles RRS feed

  • Pregunta

  • Hola amigos, tengo creada una app donde... para mejor apariencia, creé unos panel debado de las letras para cuando pases el mouse cambiaran de color los panel, ahora bien, he mejorado en contenido la app y son muchisimos panel. Ha cada panel he tenido que insertarle

    private void Minimlauncher_MouseMove(object sender, MouseEventArgs e)
            {
                        Minimlauncher.ForeColor = Color.FromArgb(255, 255, 255);
                        FontBack2.BackColor = Color.FromArgb(57, 62, 63);
                        Minimlauncher.BackColor = FontBack2.BackColor;
            }

    Existe alguna forma de no tener que ponerle a cada uno este evento(pues tengo un reguero de codigo)... es decir

    private void Minimlauncher_MouseMove(object sender, MouseEventArgs e)
            {
                        //algo para todos
            }

    Saludos y Gracias de antemano

    viernes, 6 de julio de 2018 12:57

Respuestas

  • Deleted
    • Marcado como respuesta Hackerprod lunes, 9 de julio de 2018 13:29
    viernes, 6 de julio de 2018 13:06
  • La respuesta de Walter es muy buena, como siempre, pues tiene mucho conocimiento.

    Solamente voy a complementar esta respuesta con un método automatizado para asignar la función que Walter provee a los controles Panel.

    Cualquier control tiene la colección Controls, y cualquier control tiene el evento ControlAdded que se dispara cuando se agrega un nuevo control a Controls.  Un formulario es considerado un control también pues hereda de la clase Control.

    El evento sucederá en buena teoría para los controles que se agregaron tanto desde el diseñador como los que se agregan por su propio código.

    private void Form1_ControlAdded(object sender, ControlEventArgs e)
    {
        if (e.Control is Panel)
        {
            e.Control.MouseMove += ctrl_MouseMove;
        }
    }

    No lo probé pero debería funcionarle bien.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    • Marcado como respuesta Hackerprod lunes, 9 de julio de 2018 13:29
    viernes, 6 de julio de 2018 20:14
    Moderador

Todas las respuestas

  • Deleted
    • Marcado como respuesta Hackerprod lunes, 9 de julio de 2018 13:29
    viernes, 6 de julio de 2018 13:06
  • La respuesta de Walter es muy buena, como siempre, pues tiene mucho conocimiento.

    Solamente voy a complementar esta respuesta con un método automatizado para asignar la función que Walter provee a los controles Panel.

    Cualquier control tiene la colección Controls, y cualquier control tiene el evento ControlAdded que se dispara cuando se agrega un nuevo control a Controls.  Un formulario es considerado un control también pues hereda de la clase Control.

    El evento sucederá en buena teoría para los controles que se agregaron tanto desde el diseñador como los que se agregan por su propio código.

    private void Form1_ControlAdded(object sender, ControlEventArgs e)
    {
        if (e.Control is Panel)
        {
            e.Control.MouseMove += ctrl_MouseMove;
        }
    }

    No lo probé pero debería funcionarle bien.


    Jose R. MCP
    My GIT Repositories | Mis Repositorios GIT

    • Marcado como respuesta Hackerprod lunes, 9 de julio de 2018 13:29
    viernes, 6 de julio de 2018 20:14
    Moderador
  • Hola amigos gracias por la respuesta... bueno me sirvio a la perfección pero... como nada es perfecto jajaja. Se lo aplique a todos los panel y funciono, los label que contiene dentro captaron el forecolor todo bien pero cuando le aplique lo mismo a los label no se como hacer que los panel que contienen el label se modifiquen tambien... alguna idea. Saludos
     
    • Editado Hackerprod lunes, 30 de julio de 2018 15:26
    lunes, 9 de julio de 2018 13:32