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

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

Vidéo: Passer des variables entre des Windows Forms Windows sans ShowDialog ()

Vidéo: Passer des variables entre des Windows Forms Windows sans ShowDialog ()
Vidéo: [TUTO] Comment étendre son fond d'écran avec 2 ou 3 écrans sur Windows 10 - YouTube 2024, Avril
Anonim

Lorsque vous programmez une application Windows Forms, vous aurez invariablement besoin d'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. De plus, cela ne fonctionnera pas très bien 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:

……. 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;

}

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

Conseillé: