none
Cual es el evento para cuando se termina de mover el formulario RRS feed

  • Pregunta

  • Quiero mover el formulario y cuando se haya terminado de mover es entonces cuando quiero que se active el evento. ¿Qué evento es? porque si pongo el LocationChanged si arrastro y muevo el formulario se ejecuta por cada pixel de desplazamiento y si muevo de una pantalla a otra son muchísimas llamadas.
    viernes, 11 de mayo de 2018 10:55

Todas las respuestas

  • Deleted
    viernes, 11 de mayo de 2018 12:01
  • Gracias por la respuesta pero buscaba algo que no este llamándose todo el rato.

    Por lo que he visto este método se llama para cualquier acción que se realiza en el formulario, con lo cual la condición que me has puesto se analiza muchísimo y ademas no solo entra en este método cuando mueves el formulario sino también cuando pones el cursor encima del formulario.

    He puesto una variable global llamada cont=0 y cada vez que entraba en el método he puesto que cont se incremente.

    int cont = 0;
    protected override void WndProc(ref Message m)
    {
        cont++;
        if (m.Msg == 0x0232) //WM_EXITSIZEMOVE
        {
            MessageBox.Show("La posición y/o el tamaño de la ventana ha cambiado. "+cont);
            m.Result = IntPtr.Zero;
            return;
        }
    
        base.WndProc(ref m);
    }
    He ejecutado la aplicación y he pasado desde el margen izquierdo superior al margen derecho superior luego me he ido al margen derecho inferior y luego me he ido a margen izquierdo inferior, para irme a la mitad de altura de la sección de titulo he pulsado sobre este para arrastrar el formulario y lo he movido 1 cm.

    Me parece una barbaridad. utilizar ese método.

    Prefiero utilizar location así solo se revisa cuando se mueve y no en todo momento.

    lunes, 14 de mayo de 2018 14:59
  • Creo que no hay lo que busca porque sería muy arrogante de parte de Windows pensar que sabe cuándo un humano va a terminar de mover una ventana.  Recordemos que la ventana puede moverse via mouse o teclado.  Si fuere mouse solamente, pues vaya porque podríamos asumir que la operación termina cuando se suelta el botón, que es algo que podríamos rastrear.  Sin embargo, cuando se mueve por teclado no hay tal cosa, entonces nos deja inútiles nuevamente.

    Creo que lo mejor es que se apegue a LocationChanged y use un pequeño timer para finalmente desencadenar el código deseado.


    Jose R. MCP
    Code Samples

    lunes, 14 de mayo de 2018 20:25
    Moderador
  • Lástima eso ya lo tenía y quedaba descartado.

    Seguiré buscando otras opciones más arrogantes que me pueda proporcionar Microsoft.


    miércoles, 16 de mayo de 2018 7:15