Hemsida » hur » Passvariabler mellan Windows Forms Windows utan ShowDialog ()

    Passvariabler mellan Windows Forms Windows utan ShowDialog ()

    När du programmerar en Windows Forms-applikation behöver du alltid få variabler från ett andra formulärfönster, till exempel ett alternativformulär eller popup-sökprompt.

    De flesta guiderna där ute kommer att berätta att du måste öppna den andra formen med ShowDialog (), vilket blockerar användaren från att göra något annat tills de har stängt det andra formulärfönstret. Det här kommer inte att fungera bra för en find / replace dialog, till exempel. Det fungerar inte heller bra för anpassade popup-formulär.

    Det snabba sättet att skicka variabler mellan formulären använder delegater. Du kan ställa in en händelsehandlare för avslutningsevenemanget i den andra blanketten och hantera händelsen i den första blanketten. Detta låter dig fånga variabler innan det andra formulärfönstret är stängt.

    För denna övning kommer vi att anta att vi har två former:

    MainForm

    OptionsForm

    Vi ska vidare anta att vi har klickat på en sorts knapp som öppnar OptionsForm med ett Show () -metodsamtal. Låt oss nu titta på magiken:

    .... klipp… .

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

    privat tomt theform_Closing (objekt avsändare, CancelEventArgs e)

    OptionsForm theform = (OptionsForm) avsändare;

    // Hämta variabeln från alternativformuläret. Alternativet ska ställa in denna variabel innan den stängs och variabeln ska markeras som allmän.
    sträng localvar = theform.thestringvariable;

    Det är allt som finns där.