2011-10-19 10 views
6

Pregunta simple. Tengo un MainForm y un settingsForm. El formulario de configuración se inicializa una vez y luego se muestra cada vez que el usuario hace clic en un botón. Necesito que haga algo cuando se hace clic en este botón.Qué eventos se desencadenan cuando se llama a ShowDialog (ParentForm) en C#

m_inputSettings.ShowDialog(this); //edit settings selected, so show that form 

Esta es la forma de MainForm que llama al formulario de configuración, que lo hace bien. Pero necesito el SettingsForm para hacer algo cada vez que esto sucede. Actualmente, no puedo entender si esta llamada realmente desencadena cualquier evento para el que pueda configurar manejadores. ¿Activa un evento? Si no, ¿hay alguna otra manera en que pueda decirle a SettingsForm que haga algo cada vez que ocurra esta llamada?

Nota: Cualquier código en el formulario principal después de esa línea no se ejecuta hasta que el Formulario de configuración regrese, pero eso es intencional.

Gracias.

Editar: Una de las cosas que quiero que haga mi formulario es seleccionar un control específico cuando esto sucede, pero parece que eso es imposible hasta que se haya terminado de cargar todo.

+0

Esta pregunta es relevante aquí: http://stackoverflow.com/questions/4860490/managed-version-of-spy-tool –

Respuesta

6

Puede anular el método OnVisibleChanged en su formulario de configuración. Asegúrese de llamar al base.OnVisibleChanged para no confundir a los posibles observadores del evento (y cualquier otra cosa que la clase base haga dentro de ese método).

1

Quizás use el evento VisibleChanged.

3

FormShown evento - se produce solo una vez cuando se muestra el formulario por primera vez. OnPaint/OnActivate - cada vez que se activa el formulario, pero estos eventos se suceden incluso cuando cambia con otra aplicación, lo que probablemente no desee hacer. Si está cambiando la visibilidad de la forma, puede usar OnVisibleChanged Si está minimizando el formulario, puede usar el evento OnSizeChanged/OnLocationChanged.

Si ninguno le conviene, haga una propiedad pública y establezca falso cuando el formulario está cerrado/oculto, y configure verdadero antes de mostrarlo. OnActivate, use esta propiedad para realizar su tarea.

Cuestiones relacionadas