Page d'accueil » comment » Passer des variables entre des Windows Forms Windows sans ShowDialog ()

    Passer des variables entre des Windows Forms Windows sans ShowDialog ()

    Lorsque vous programmez une application Windows Forms, vous devez invariablement obtenir des variables à partir d'une seconde fenêtre de formulaire, telle qu'un formulaire d'options ou une invite de recherche contextuelle..

    La plupart des guides vous diront que vous devez ouvrir le deuxième formulaire avec ShowDialog (), ce qui empêche l'utilisateur de faire autre chose jusqu'à ce qu'il ait fermé la fenêtre du deuxième formulaire. Cela ne fonctionnera pas très bien pour un dialogue de recherche / remplacement, par exemple. Cela ne fonctionnera pas très bien non plus pour les formulaires popup personnalisés.

    Le moyen rapide de passer des variables entre les formulaires consiste à utiliser des délégués. Vous pouvez définir un gestionnaire d'événements pour l'événement Closing du second formulaire et gérer l'événement dans le premier formulaire. Cela vous permet de capturer des variables avant la fermeture de la deuxième fenêtre de formulaire.

    Pour cet exercice, nous allons supposer que nous avons deux formes:

    MainForm

    OptionsForm

    Nous allons supposer que nous avons cliqué sur une sorte de bouton qui ouvre le formulaire OptionsForm avec un appel à la méthode Show (). Voyons maintenant la magie:

    … couper… .

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

    private void theform_Closing (expéditeur d'objet, CancelEventArgs e)

    OptionsForm theform = (OptionsForm) expéditeur;

    // Récupère la variable à partir du formulaire d'options. Le formulaire d’options doit définir cette variable avant sa fermeture, et la variable doit être marquée comme publique..
    string localvar = theform.thestringvariable;

    C'est tout ce qu'on peut en dire.