If-Koubou

Pass variabile între Windows Forms Windows fără ShowDialog ()

Pass variabile între Windows Forms Windows fără ShowDialog () (Cum să)

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 ghizilor de acolo vă vor spune că trebuie să deschideți al doilea formular cu ShowDialog (), care blochează utilizatorul de a face 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.

Calea 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:

.... snip ....

OpțiuniFormăformă = noua opțiuneFormă ();
theform.Closing + = new CancelEventHandler (theform_Closing);
theform.Show ();

private void theform_Closing (expeditor obiect, CancelEventArgs e)

OptionsForm theform = (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.