ShowDialog () tandis que l'autre forme est visible à travers ShowDialog (), ainsi, ferme les deux?

StackOverflow https://stackoverflow.com/questions/2161448

  •  23-09-2019
  •  | 
  •  

Question

J'ai la situation suivante:

  1. ParentForm qui ouvre WelcomeForm avec ShowDialog.
  2. WelcomeForm contient une touche qui ouvre NewProjectForm avec ShowDialog
  3. Lorsque l'utilisateur touche OK sur NewProjectForm, un nouveau projet est créé et les deux formes sont fermées (bonne conduite)
  4. Lorsque l'utilisateur touche CANCEL sur NewProjectForm, 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 ...

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top