Při programování aplikace Windows Forms budete vždy potřebovat získat proměnné z druhého okna formuláře, například formuláře voleb nebo výzvy k vyskakování.
Většina průvodců tam vám to řeknemusíte otevřít druhý formulář pomocí programu ShowDialog (), který uživateli blokuje dělat cokoli jiného, dokud nezavřou druhé okno formuláře. To například nebude fungovat pro dialogové okno Najít / nahradit. Také nebude dobře fungovat pro vlastní nakreslené vyskakovací formuláře.
Rychlý způsob předávání proměnných mezi formulářipoužívá delegáty. Pro událost Uzavření druhého formuláře můžete nastavit správce událostí a událost zpracovat v prvním formuláři. To vám umožní zachytit proměnné před uzavřením druhého okna formuláře.
Pro toto cvičení budeme předpokládat, že máme dvě formy:
MainForm
MožnostiForm
Budeme dále předpokládat, že jsme klikli na nějaké tlačítko, které otevře volání metody OptionsForm pomocí volání metody Show (). Nyní se podívejme na kouzlo:
……. stříhat ......
OptionsForm theform = new OptionsForm ();
theform.Closing + = new CancelEventHandler (theform_Closing);
theform.Show ();
}
private void theform_Closing (odesílatel objektu, CancelEventArgs e)
{
OptionsForm theform = (OptionsForm) odesílatel;
// Získat proměnnou z formuláře voleb. Formulář voleb by měl tuto proměnnou nastavit před jejím zavřením a proměnná by měla být označena jako veřejná.
string localvar = theform.thestringvariable;
}
To je všechno.