Passare variabili tra Windows Forms Windows senza ShowDialog ()
Quando si programma un'applicazione Windows Form, è necessario recuperare le variabili da una seconda finestra del modulo, ad esempio un modulo di opzioni o un prompt di ricerca popup..
La maggior parte delle guide là fuori ti diranno che devi aprire il secondo modulo con ShowDialog (), che impedisce all'utente di fare qualsiasi altra cosa fino a quando non hanno chiuso la seconda finestra del modulo. Questo non funzionerà molto bene per una finestra di dialogo Trova / Sostituisci, per esempio. Inoltre non funzionerà molto bene per i moduli popup personalizzati.
Il modo rapido per passare le variabili tra i moduli è l'utilizzo dei delegati. È possibile impostare un eventhandler per l'evento di chiusura del secondo modulo e gestire l'evento nel primo modulo. Ciò consente di acquisire variabili prima che la seconda finestra del modulo sia stata chiusa.
Per questo esercizio, assumeremo che abbiamo due forme:
MainForm
OptionsForm
Supponiamo inoltre di aver fatto clic su una sorta di pulsante che apre OptionsForm con una chiamata al metodo Show (). Ora diamo un'occhiata alla magia:
... snip ... .
OptionsForm theform = new OptionsForm ();
theform.Closing + = new CancelEventHandler (theform_Closing);
theform.Show ();private void theform_Closing (oggetto mittente, CancelEventArgs e)
OptionsForm theform = (OptionsForm) mittente;
// Prendi la variabile dal modulo delle opzioni. Il modulo delle opzioni dovrebbe impostare questa variabile prima che si chiuda e la variabile dovrebbe essere contrassegnata come pubblica.
stringa localvar = theform.thestringvariable;
Questo è tutto ciò che c'è da fare.