Para cualquier diálogo personalizado (forma) en una aplicación WinForm puedo fijar su tamaño y posición antes de mostrarlo con:Ajuste de la posición de inicio de OpenFileDialog/SaveFileDialog
form.StartPosition = FormStartPosition.Manual;
form.DesktopBounds = MyWindowPosition;
Esto es particularmente importante cuando se trata de múltiples monitores. Sin dicho código, cuando abre un diálogo desde una aplicación que ha arrastrado a un segundo monitor, el diálogo aparece en el monitor principal. Esto presenta una experiencia de usuario pobre.
Me pregunto si hay ganchos para establecer la posición para .NET OpenFileDialog y SaveFileDialog (que no tienen una propiedad StartPosition).
Esto sonaba tan simple que tenía que funcionar (¡al menos había que probarlo!). Desgraciadamente, tanto el 0-arg como el 1-arg ShowDialog fallan de la misma manera en este caso de prueba: 1. Ejecute la aplicación. 2. Invoque el nuevo OpenFileDialog(). ShowDialog (this); el diálogo aparece en el mismo monitor que la aplicación. 3. Cerrar el cuadro de diálogo. 4. Arrastre la ventana de la aplicación a un monitor diferente. 5. Invoque el nuevo OpenFileDialog(). ShowDialog (this); aparece el cuadro de diálogo en el monitor * original *. Aunque uso un OpenFileDialog nuevo en el paso 5, todavía hay algo persistente sobre la ubicación original de la aplicación principal. –
Estoy (finalmente :-) eligiendo la respuesta de Marc como la mejor porque descubrí que * no * se aplica a Windows 7. Mi máquina es WinXP, donde el caso de prueba que delineo arriba todavía falla. Decidí probar los foros de Microsoft con la misma pregunta y me dieron una solución que funciona para WinXP: mira este hilo (http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/dec48489- 0a57-4baa-b401-82266be782e0) para el código. –