.NET permite una forma de “propios” otras formas. Los formularios propios son útiles para flotante caja de herramientas y ventanas de comandos. Un ejemplo de un formulario propio es la ventana Buscar y reemplazar en Microsoft Word. Cuando se minimiza una ventana de propietario, , los formularios propios también se minimizan automáticamente. Cuando un formulario propiedad de se superpone a su propietario, siempre se muestra en la parte superior.
(c) "Pro .NET 2.0 Windows Forms and Custom Controls" de Matthew MacDonald.
Como ShowDialog muestra la nueva forma, una relación implícita es establecieron entre la forma activa actualmente, conocida como la forma propietario , y la nueva forma, conocida como la forma de propiedad. Esta relación asegura que el formulario propiedad es el formulario activo y siempre se muestra en el en la parte superior del formulario de propietario.
Una característica de esta relación es que la forma de propiedad afecta al comportamiento de su forma propietario (cuando se utiliza ShowDialog):
- El dueño de la forma no puede ser minimizado, maximizado, o incluso se movió.
- El formulario propiedad bloquea la entrada del mouse y del teclado al formulario de propietario.
- El formulario de propietario se minimiza cuando el formulario propiedad es.
- Solo se puede cerrar el formulario de propiedad.
- Si el propietario y los formularios propios se reducen al mínimo y si el usuario presiona Alt + Tab para cambiar al formulario propiedad, se activa el formulario propio.
A diferencia del método ShowDialog, sin embargo, una llamada al método Muestrahace no establece una relación de propiedad del dueño del implícita. Esto significa que el formulario puede ser el formulario activo actualmente.
Sin una relación implícita de propietario, los propietarios y los formularios propios se pueden minimizar, maximizar o mover. Si el usuario cierra cualquier formulario que no sea el formulario principal, el formulario activo más reciente es reactivado.
Aunque ShowDialog establece una relación de propiedad del dueño del implícita, no hay manera integrada para la forma de propiedad para volver a llamar a consulta o la forma que lo abrió. En el caso no modal, puede configurar la nueva propiedad Propietario del formulario para establecer la relación propiedad del propietario. Como un acceso directo , puede pasar el formulario de propietario como argumento a una sobrecarga del método Show, que también toma un parámetro IWin32Window (IWin32Window está implementado por objetos Windows Forms UI que exponen una propiedad Win32 HWND a través de IWin32Window. Manejar la propiedad).
El comportamiento de las formas en una relación explícita modal-propietario propiedad forma es lo mismo que su contraparte modal implícita, pero la relación no modal propiedad del propietario proporciona un comportamiento adicional en el caso modal propiedad de no-propietario . Primero, el formulario de propiedad no modal siempre aparece en la parte superior del formulario de propietario, aunque cualquiera puede estar activo. Esto es útil cuando necesita conservar un formulario, como una ventana de herramienta flotante , además de otros formularios dentro de una aplicación. En segundo lugar, si el usuario presiona Alt + Tab para cambiar del propietario, los formularios propios siguen el modelo . Para garantizar que el usuario sepa qué formulario es el principal, minimizando el propietario se ocultan los botones de la barra de tareas para todos los formularios propios, dejando solo el botón de la barra de tareas del propietario visible.
(c) "Windows Forms 2.0 Programming" de Chris Sells, Michael Weinhardt.
Esto no parece aplicarse en winforms, pero para el registro, vine aquí porque tenía problemas en WPF. Si cambiaba a otra aplicación, cuando volvía a hacer clic en el formulario principal, el cuadro de diálogo secundario se quedaba atascado (porque el cuadro de diálogo secundario estaba configurado para no mostrarse en la barra de tareas). Configurar al propietario del cuadro de diálogo solucionó este problema. – Benjol
Inicie un trabajador en segundo plano y llame a ShowDialog.La ventana no aparecerá en frente de su aplicación, sino en el fondo (solo para molestarnos con los programadores esto solo ocurre de vez en cuando). – CodingBarfield
Barfieldmv, intenté hacer lo que sugirió y el formulario aparece en la parte superior, no en el fondo. – nightcoder