Amikor Windows Forms alkalmazást programoz, mindig meg kell adnia a változókat egy második űrlap ablakból, például egy opcionális űrlapból vagy egy felugró keresési kérésből.
A legtöbb útmutatók azt mondják, hogy a második űrlapot a ShowDialog () programmal kell megnyitni, ami megakadályozza a felhasználót abban, hogy bármi mást csináljon, amíg bezárják a második űrlapot. Például ez nem fog jól működni a találati / kicserélési párbeszédpanelen. Nem fog jól működni a megszokott popup űrlapoknál sem.
A formák közötti változók átvitelének gyors módja a Delegátumok használata. Beállíthat egy eseménykiszolgálót a második űrlap záró eseményére, és kezelheti az eseményt az első formában. Ez lehetővé teszi a változók rögzítését a második űrlap bezárása előtt.
Ehhez a gyakorlathoz azt feltételezzük, hogy két formája van:
MainForm
OptionsForm
Továbbá feltételezzük, hogy rákattintunk valamilyen gombra, amely megnyitja az OptionsFormot Show () metódushívással. Most vessünk egy pillantást a mágiára:
……. 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;
}
Ez mindennek megvan.