Pass variabler mellem Windows Forms Windows uden ShowDialog ()

Pass variabler mellem Windows Forms Windows uden ShowDialog ()
Pass variabler mellem Windows Forms Windows uden ShowDialog ()
Anonim

Når du programmerer en Windows Forms-applikation, skal du altid få variabler fra et andet formvindue, som f.eks. En valgformular eller popup-søgeprompt.

De fleste guider derude vil fortælle dig, at du skal åbne den anden formular med ShowDialog (), som blokerer brugeren fra at gøre noget andet, indtil de har lukket det andet formularvindue. Dette virker ikke særlig godt for en find / erstatningsdialog, f.eks. Det vil også ikke fungere rigtig godt til brugerdefinerede popup-formularer.

Den hurtige måde at passere variabler mellem formularerne på er at bruge delegerede. Du kan indstille en eventhandler til afslutningsbegivenheden i den anden formular og håndtere begivenheden i den første formular. Dette giver dig mulighed for at indfange variabler, før det andet formularvindue er lukket.

Til denne øvelse vil vi antage, at vi har to former:

MainForm

OptionsForm

Vi vil yderligere antage, at vi har klikket på en slags knap, der åbner OptionsForm med et Show () metodeopkald. Lad os nu se på magien:

……. snip…….

OptionsForm theform = new OptionsForm(); theform.Closing += new CancelEventHandler(theform_Closing); theform.Show();

}

private void theform_Closing(object sender, CancelEventArgs e) {

OptionsForm theform = (OptionsForm)sender;

// Grab the variable from the options form. The options form should set this variable before it closes, and the variable should be marked as public. string localvar = theform.thestringvariable;

}

Det er alt der er til det.

Populært emne.

Ekspertråd