WinForms boîte de Dialogue Formulaire de Près ou de Céder?
J'ai hérité un peu de code et voulait courir cette modification par vous tous, ma préoccupation est que la gestion de la mémoire.
Disons que j'ai une "base" de la Forme avec un tas de boutons permettant d'ouvrir la boîte de dialogue "formulaires". Quel est le modèle recommandé pour l'ouverture de la boîte de dialogue formulaires? Actuellement, nous afficher la boîte de dialogue "" formulaire comme si (dans la "base" du code de Formulaire sur le bouton de la souris):
ChangePasswordForm frm = new ChangePasswordForm();
frm.ShowDialog();
Puis fermez-le comme (dans la boîte de dialogue "" le code du formulaire):
private void bCancel_Click(object sender, EventArgs e)
{
this.Close();
//this.Dispose(); <-- this is what I am considering adding.
}
Mon raisonnement pour l'ajout de Disposer, c'est que je suis inquiet si ce formulaire est affiché et fermé à plusieurs reprises que chaque fois qu'un nouveau exemple de la création du formulaire et de ses ressources, ne sont jamais libérés, est-ce correct? Aussi, si le formulaire a le "proche" de X en haut à droite, dois-je mettre un appel dispose() dans le FormClosed événement?
Merci d'avance.
OriginalL'auteur mikey | 2011-11-10
Vous devez vous connecter pour publier un commentaire.
Je voudrais utiliser un
using
déclaration:Combiner cela avec une DialogResult:
Réglage de la DialogResult, va fermer la boîte de Dialogue, et l'appelant ou le propriétaire a quelques commentaires.
Et vous n'avez pas à vous soucier de Fermer ou de les Éliminer.
Réglage de la DialogResult, va fermer la boîte de dialogue, et de la ShowDialog appel sera de retour. ShowDialog, montre la forme en "modal" mode, le code appelant est bloqué jusqu'à ce que la boîte de dialogue est fermée.
Excellent, merci!
+1 pour les meilleures pratiques.
Réglage de la DialogResult sera la cause de la spéciale messageloop qui est utilisé pour les formulaires modaux pour arrêter l'exécution, ce messageloop n'est pas utilisée pour les formulaires non modale. Réglage DialogResult sur un formulaire non modal ne va pas fermer le formulaire.
OriginalL'auteur GvS
Selon MSDN, vous devez disposer sous deux conditions:
MSDN Forme.Fermer
Déclarant la forme à l'aide d'instruction serait la meilleure façon de gérer cela.
OriginalL'auteur RobotMike