Fenêtres qui s'ouvrent quand on ouvre le [Design] d'une Form

Nikachu Messages postés 3 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 22 avril 2009 - 22 avril 2009 à 16:31
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 25 avril 2009 à 20:08
Bonjour à tous,

Je sollicite votre aide sur le point suivant : je suis chargée de concevoir une application d'édition de .doc pour mon entreprise, et la solution que je développe utilise trois fenêtres (toutes héritant de Form) :
- une fenêtre de ma classe Form1 qui récolte des données entrées par l'utilisateur,
- une fenêtre de ma class Form2 qui gère la partie avec Word et enregistre en .doc les données récoltées, et
- une fenêtre de menu principal MyForm, qui contient une instance de Form1 et une instance de Form2, et gère leur apparition à l'écran.

Schématiquement, j'ai :

class MyForm : Form
{

// Attributs
private Form1 f1;

private Form2 f2;






// Constructeurs

public MyForm()
{
f1.Visible = false;
f2.Visible = false;
this.TopMost = true;
}

// Méthodes qui font apparaître/disparaître f1 et f2 via leur attribut Visible

}



Pour une raison que je ne saisis pas, à chaque fois que j'ouvre le design de MyForm.cs, deux fenêtres, respectivement une Form1 et une Form2 sont générées (en dehors de la fenêtre de Visual C# Express et en dehors de la fenêtre de MyForm qui a été générée).

Bien entendu, j'ai paramétré des Visible = false partout dans mon code, mais je ne vois pas en quoi c'est lié à ce que j'ai programmé, puisque ces fenêtres magiques apparaissent sans que le code soit généré ou en train d'être débogé !

Et j'ai bien vérifié : elles se ferment quand je ferme l'onglet MyForm.cs [Design] et se rouvrent quand je double-clique sur MyForm.cs dans l'explorateur de solutions (mais elles ne s'ouvrent pas si je fais clic droit et Afficher le code de MyForm.cs !) !

J'en perds la tête, sauvez-moi, par pitié !

Par avance, merci.

2 réponses

Nikachu Messages postés 3 Date d'inscription dimanche 30 mars 2008 Statut Membre Dernière intervention 22 avril 2009
22 avril 2009 à 17:11
J'ai trouvé ! C'était lié au fait que les assignations fs1 = new FormStep1(); et fs2 = new FormStep2(); étaient dans la fonction InitializeComponent() de la classe MyForm (dans MyForm.Designer.cs pour être précise).

Je veux
bien qu'on m'explique le pourquoi du comment, maintenant que les
assignations sont retournées dans le constructeur MyForm()...
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
25 avril 2009 à 20:08
Bonjour,

En gros, le designer héberge le formulaire plus au moins comme s'il était exécuté.
Pour le code ne devant pas être exécuté lors de l'hébergement en mode Design, il faut regarder du côté de la propriété DesignMode disponible sur tout ce qui hérite de Component (Control et donc Form la possède donc).

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous