¿Cómo puedo hacer mousedrag interior del Panel de la forma de movimiento de la ventana?

Tengo este Sistema.Windows.Los formularios.El Panel que quiero habilitar de manera que si el usuario hace clic y arrastra el ratón, arrastra la ventana alrededor de a.

Puedo hacer esto? Tengo la implementación de múltiples eventos?

  • Utilice el panel del evento MouseMove. Esto no es ciencia de cohetes.
InformationsquelleAutor Jason94 | 2012-07-07

4 Kommentare

  1. 4

    Puede lograr mediante el Evento MouseMove del panel de

    Ejemplo debería ser algo como esto (lo Siento no lo he probado)

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            this.Location = new Point(Cursor.Position.X + e.X , Cursor.Position.Y + e.Y);
        }
    }
  2. 30

    La Solución que funciona mejor para mí es el uso de código no administrado, lo que le da suave ventana de movimientos a diferencia de la respuesta publicada por HatSoft.

    3 pequeños pasos para arrastrar la ventana en el Panel de movimiento

    using System.Runtime.InteropServices;

    agregar estas seis líneas dentro de su clase

    public const int WM_NCLBUTTONDOWN = 0xA1;
    public const int HT_CAPTION = 0x2;
    
    [DllImportAttribute("user32.dll")]
    public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
    [DllImportAttribute("user32.dll")]
    public static extern bool ReleaseCapture();

    y su evento MouseMove en el Panel debería tener este aspecto

    private void panel1_MouseMove(object sender, MouseEventArgs e)
    {
       if (e.Button == MouseButtons.Left)
       {
          ReleaseCapture();
          SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
       }
    }

    publicado un poco tarde 🙂 , quien sabe que podría necesitar de nuevo en el futuro.

    • por ejemplo, const int WM_NCLBUTTONDOWN = 0x00A1;
    • oh, sí, lo echaba de menos, Gracias por señalarlo. 🙂 actualizado mi respuesta
    • Este debe ser elegido como el aceptado respuesta. Funciona como un encanto. El actual aceptado la respuesta tiene fallos, pero le da un codazo hacia el enfoque mientras que la solución de este problema.
    • El aceptó responder causa problemas cuando se utilizan múltiples pantallas. Esto debe ser aceptado respuesta. Fácil de implementar y es muy suave
  3. -1

    Bravo código funciona perfectamente bien, pero no pude conseguir este trabajo hasta que me han hecho explícita evento MouseMove activar en el panel s->propiedades->caso de la sección de mi panel quería mover.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea