Pass Variabler mellom Windows Forms Windows uten ShowDialog ()

Pass Variabler mellom Windows Forms Windows uten ShowDialog ()
Pass Variabler mellom Windows Forms Windows uten ShowDialog ()
Anonim

Når du programmerer en Windows Forms-applikasjon, må du alltid få variabler fra et annet skjermvindu, for eksempel et valgskjema eller en popup-søkeprompt.

De fleste guider der ute vil fortelle deg at du må åpne den andre skjemaet med ShowDialog (), som blokkerer brukeren fra å gjøre noe annet før de har lukket det andre skjermvinduet. Dette vil ikke fungere veldig bra for en finne / erstattingsdialog, for eksempel. Det vil også ikke fungere veldig bra for egendefinerte tegnet popup-skjemaer.

Den raske måten å passere variabler mellom skjemaene, er ved hjelp av delegerte. Du kan sette en eventhandler for Lukkhendelsen av den andre skjemaet, og håndter hendelsen i det første skjemaet. Dette lar deg fange variabler før det andre skjemavinduet er lukket.

For denne øvelsen kommer vi til å anta at vi har to former:

MainForm

OptionsForm

Vi skal videre anta at vi har klikket på en slags knapp som åpner OptionsForm med et Show () -metodeanrop. La oss nå 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.

Anbefalt: