ShowDialog () tandis que l'autre forme est visible à travers ShowDialog (), ainsi, ferme les deux?
-
23-09-2019 - |
Question
J'ai la situation suivante:
-
ParentForm
qui ouvreWelcomeForm
avecShowDialog
. -
WelcomeForm
contient une touche qui ouvreNewProjectForm
avecShowDialog
- Lorsque l'utilisateur touche
OK
surNewProjectForm
, un nouveau projet est créé et les deux formes sont fermées (bonne conduite) - Lorsque l'utilisateur touche
CANCEL
surNewProjectForm
, les deux formes sont fermées (comportement compréhensible, mais pas desireable).
Je soupçonne que cela a en quelque sorte quelque chose à voir avec DialogResult
(qui est en fait sur DialogResult.None
CANCEL
et NewProjectForm
)
Comment puis-je obtenir la situation ci-dessus sans que les deux formes de fermeture?
Modifier
Code utilisé pour ouvrir NewProjectForm
:
ProjectNew projectNew = new ProjectNew();
projectNew.StartPosition = FormStartPosition.CenterParent;
projectNew.ShowDialog(this);
Code utilisé pour ouvrir WelcomeForm
:
Welcome welcome = new Welcome();
welcome.StartPosition = FormStartPosition.CenterParent;
welcome.ShowDialog(this);
Remarque: NewProjectForm
est pas ouvert par Welcome
mais par ParentForm
Edit 2 choses étranges; J'ai créé un nouveau projet avec le même code / situation qui ne se reproduit pas ce comportement ...
La solution 3
Suppression d'un couple de boutons, a ajouté un nouveau. Résolu
Je pense donc qu'il aurait dû être un DialogResult en quelque sorte, des trucs bizarres.
Autres conseils
Cela a été un problème de longue date que j'ai couru contre quelques fois. Ce poste a plus de discussions sur elle, ainsi qu'une solution de contournement.
Il a apparemment été corrigé dans .Net 3.5 SP1 (je ne peux plus se reproduire après l'installation du SP1), bien que je ne l'ai pas vu aucun mot officiel sur ce qu'il a été définitivement fixé.
Je me suis mordu par cela parce que j'avais copier / coller des boutons d'une autre forme, sans se rendre compte que l'un des boutons avait sa DialogResult propriété définie sur DialogResult.Cancel .
Lorsque vous cliquez dessus, cela a été établit la DialogResult de formulaire contenant, l'amenant à se fermer.
Remise à zéro à DialogResult.None résolu le problème.
Donc, vérifiez les propriétés de DialogResult sur tous vos boîtes de dialogue modales.