Pass variabile între Windows Forms Ferestre fără ShowDialog ()
Când programați o aplicație Windows Forms, va trebui invariabil să obțineți variabile dintr-o a doua fereastră de formular, cum ar fi un formular de opțiuni sau un prompt de căutare pop-up.
Majoritatea ghidurilor de acolo vă vor spune că trebuie să deschideți al doilea formular cu ShowDialog (), care împiedică utilizatorul să facă altceva până când închid a doua fereastră de formular. Acest lucru nu va funcționa foarte bine pentru un dialog de căutare / înlocuire, de exemplu. De asemenea, nu va funcționa foarte bine pentru formularele tip pop-up personalizate.
Modul rapid de trecere a variabilelor între formulare utilizează delegați. Puteți seta un eventhandler pentru evenimentul de închidere al celui de-al doilea formular și puteți gestiona evenimentul în prima formă. Aceasta vă permite să capturați variabile înainte de închiderea celei de-a doua ferestre de formular.
Pentru acest exercițiu, vom presupune că avem două forme:
MainForm
OptionsForm
Vom presupune și că am făcut clic pe un buton care deschide opțiunea OptionsForm cu un apel de tip Show (). Acum, să aruncăm o privire la magie:
.... croitor… .
OpțiuniFormăform = noua opțiuneFormă ();
theform.Closing + = new CancelEventHandler (theform_Closing);
theform.Show ();private void theform_Closing (expeditor obiect, CancelEventArgs e)
OpțiuniFormulormal = (OpțiuniForm) expeditor;
// Prindeți variabila din formularul de opțiuni. Formularul de opțiuni trebuie să stabilească această variabilă înainte de a se închide, iar variabila ar trebui să fie marcată ca fiind publică.
string localvar = theform.thestringvariable;
Cam despre asta e.