Re: Mover formulario sin barra de titulo

12/05/2006 - 12:24 por mafraeb | Informe spam
He encontrado la solución. En el MouseDown nos quedamos con la pos del raton y en el Mouse_Move redibujamos el formulario en función de la nueva posición

int XPos
int YPos

private void formulario_MouseDown(object sender, MouseEventArgs e

//nos quedamos con la posicion del rato
if (e.Button == MouseButtons.Left

XPos = e.X
YPos = e.Y



private void formulario_MouseMove(object sender, MouseEventArgs e

//si tiene pulsado el boton del raton movemos el formulari
if (e.Button == MouseButtons.Left

int X = e.X
int Y = e.Y
this.Left = this.Left - (XPos - X)
this.Top = this.Top - (YPos - Y)



El problema que tengo ahora es que el refresco de la pantalla al moverlo no es bueno, por lo que si alguien me da una solución para esto, perfecto

Gracias

mafraeb

Ver este tema: http://www.softwaremix.net/viewtopic-514609.htm

Enviado desde http://www.softwaremix.net
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
12/05/2006 - 23:51 | Informe spam
Reemplaza tu codigo por este:

protected override void OnMouseDown(MouseEventArgs e) {

const int WM_NCLBUTTONDOWN = 0x00A1;
const uint HTCAPTION = 2;

// Suelto la captura del mouse
this.Capture = false;

// Simulo un click en la barra de titulo
Message m = new Message();
m.HWnd = this.Handle;
m.Msg = WM_NCLBUTTONDOWN;
m.WParam = new IntPtr(HTCAPTION);
this.WndProc(ref m);

}

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
http://mvp.support.microsoft.com/pr...4EF5A4191C

Preguntas similares