If-Koubou

Pass-muuttujat Windows-lomakkeiden välillä Windows ilman ShowDialogia ()

Pass-muuttujat Windows-lomakkeiden välillä Windows ilman ShowDialogia () (Miten)

Kun ohjelmoit Windows Forms -sovellusta, tarvitset aina muuttujia toisesta lomakeikkunasta, kuten vaihtoehdon lomakkeesta tai ponnahdusikkunan hakupyynnistä.

Suurin osa oppaista siellä kertoo, että sinun on avattava toinen lomake ShowDialog () -ohjelmalla, joka estää käyttäjän tekemästä mitään muuta, kunnes he ovat sulkenneet toisen lomakkeen ikkunan. Tämä ei kuitenkaan toimi kovin hyvin löytää / korvaava valintaikkuna. Se ei myöskään toimi kovin hyvin muokatuilla popup-lomakkeilla.

Nopea tapa välittää muuttujia lomakkeiden välillä on käyttää lähetystöjä. Voit asettaa tapahtumanhallinnan toisen lomakkeen sulkemistapahtumaan ja käsitellä tapahtuman ensimmäisessä muodossa. Näin voit kaapata muuttujat ennen kuin toinen lomakeikkuna on suljettu.

Tätä harjoitusta varten aiomme olettaa, että meillä on kaksi muotoa:

MainForm

OptionsForm

Aiomme edelleen olettaa, että olemme napsauttaneet jonkinlaista painiketta, joka avaa OptionsFormin Show () -menetelmäpuhelun avulla. Katsotaan nyt taikaa:

.... snip ....

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

yksityinen void theform_Closing (objektin lähettäjä, CancelEventArgs e)

OptionsForm theform = (OptionsForm) lähettäjä;

// Lukekaa muuttuja vaihtoehdon lomakkeesta. Vaihtoehtoisen lomakkeen pitäisi asettaa tämä muuttuja ennen sulkemista ja muuttuja on merkittävä julkiseksi.
merkki localvar = theform.thestringvariable;

Siinä kaikki on.