2011-10-19 11 views
6

Domanda semplice. Ho un MainForm e un settingsForm. Il modulo delle impostazioni viene inizializzato una volta e quindi visualizzato ogni volta che l'utente fa clic su un pulsante. Ho bisogno che faccia qualcosa quando si fa clic su questo pulsante.Quali eventi vengono attivati ​​quando viene chiamato ShowDialog (ParentForm) in C#

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

Questo è il MainForm che chiama il modulo di impostazioni, che funziona correttamente. Ma ho bisogno che SettingsForm faccia qualcosa ogni volta che succede. Attualmente, non riesco a capire se questa chiamata attiva effettivamente gli eventi per i quali posso impostare i gestori. Fa scattare un evento? In caso contrario, c'è un altro modo in cui posso dire al mio SettingsForm di fare qualcosa ogni volta che avviene questa chiamata?

Nota: Qualsiasi codice nella mainform dopo tale riga non viene eseguito fino a quando non viene restituito SettingsForm, ma è intenzionale.

Grazie.

Modifica: una delle cose che voglio che il mio modulo lo faccia seleziona un controllo specifico quando ciò accade, ma sembra che sia impossibile fino a dopo che il modulo ha finito di caricare tutto.

+0

Questa domanda è pertinente qui: http://stackoverflow.com/questions/4860490/managed-version-of-spy-tool –

risposta

6

È possibile eseguire l'override del metodo OnVisibleChanged nel modulo delle impostazioni. Assicurati di chiamare base.OnVisibleChanged per non rovinare eventuali potenziali osservatori dell'evento (e qualsiasi altra cosa la classe base possa fare all'interno di quel metodo.)

1

Forse utilizzare l'evento VisibleChanged.

3

FormShown evento - generato una volta sola quando la maschera viene visualizzata per la prima volta. OnPaint/OnActivate - ogni volta che viene attivato il modulo, ma questi eventi vengono generati anche quando si passa ad un'altra applicazione, che probabilmente non si vuole fare. Se si modifica la visibilità del modulo, è possibile utilizzare OnVisibleChanged Se si riduce a icona il modulo, è possibile utilizzare l'evento OnSizeChanged/OnLocationChanged.

Se nessuno ti soddisfa, imposta una proprietà pubblica e imposta false quando la forma viene chiusa/nascosta e imposta true prima di mostrarla. OnActivate, usa questa proprietà per fare il tuo compito.

Problemi correlati