2010-03-20 11 views
6

Mi formulario principal inicia otro como cuadro de diálogo modal, usando .ShowDialog. Quiero posicionar esto en función de la posición del mouse, pero mis intentos de llamar al SetDesktopLocation no tienen ningún efecto. ¿Es este el método correcto?Cómo mover un cuadro de diálogo de Winform

Gracias

Respuesta

6

Con el fin de establecer la posición de un formulario mediante programación antes de que sea visible, es necesario establecer la propiedad StartPosition a Manual, a continuación, establezca la propiedad Location a la ubicación deseada.

using(Form toShow = new YourForm()) 
{ 
    toShow.StartPosition = FormStartPosition.Manual; 
    toShow.Location = MousePosition; 

    toShow.ShowDialog(); 
} 
+1

Mi formulario no tiene Posición, solo Ubicación. Pero el StartPosition fue el principal problema, así que le daré la marca verde –

+0

@John: Lo siento, escribió la respuesta a toda prisa. 'Location' es la propiedad correcta. –

2

Puede probar esto en el método onLoad() de su nueva forma:

this.Location = new Point(paramX, paramY); 

donde paramX y paramY están representando la posición del ratón.

3

Además, no olvide que los diálogos modales detienen la ejecución en otros formularios hasta que se cierren, por lo que tendrá que hacer el posicionamiento con el formulario de diálogo, no en las líneas subsiguientes del abridor, ya que ganaron ' Se llamará hasta que se cierre el diálogo.

Además, compruebe que el StartPosition del formulario se establece en Manual

Cuestiones relacionadas