Lancer une feuille fille mdi une et une seule fois [Résolu]

Signaler
Messages postés
21
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2018
-
anadeveloppeur
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019
-
Bonjour, je developpe une application sous c# (Csharp),dans laquelle j'utilise la technique des MDI. Sur mon formulaire MDI pere, j'ai crée une barre de menu .Le menu Fichier comprend le sous-menu ouvrir qui lui comprend les sous menus "medecin",patient"....
chaque fois que je fais un click sur le sous menu "medecin", le formulaire correspond (formulaire medecin) s'affiche. Le formulaire s'affiche autant de fois que j'effectue de click dans le sous menu "medecin". Alors je demande votre aide pour remedier à ce problème, afin qu'un formulaire puisse s'afficher une et une seule fois quelque soit le nombre de click dans le sous-menu.
Merci et a bientôt.

exemple de code dans le sous menu medecin
 private sub mnedecin_click()
{
  frmmedecin fm = new frmmedecin(); // instanciation du form medecin
fm.mdiparent = this; // le fm est la fille de frmprincipal
fm.Show();
}

 

6 réponses

Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010

en reflechissant un peu tu pourrais trouver la reponse par toi meme...

je vais te donner quelques indices:
dans ta methode, tu instancie une nouvelle form medecin a chaque click, ce que signifie que tu CREE une nouvelle form a chaque click
donc la solution a ton probleme srait d'avoir une variable unique de type form dans laquelle tu instancierais a volonté ta form medecin, si elle n'est pas deja créée,

reflechis y bien, tu devrais trouver

Nul ne devient grand par la guerre...
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019

Bonjour.
Avez-vous résolu le problème? Sincèrement j'y suis bloqué !
Merci pour toute aide.
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
31
Salut

Dans ta form parente, garde une référence sur ta sous form et regarde si elle est nulle ou non

class FormParente
{
    private ClasseSSForm _ssForm1 = null;
    
    private MonBouton_Click(object sender, EventArgs e)
    {
        if(_ssForm1 == null)
        {
            _ssForm1 = new ClasseSSForm();
            _ssForm1.MdiParent = this;
        }
        _ssForm1.Show();
    }
}


Krimog : while (!(succeed = try())) ;
- NON, "LE BAR" n'est PAS un langage de programmation ! -
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019

Bonjour.
J'ai déjà pensé à cette solution, mais le problème c'est que lorsque le ferme la fenêtre fille, quand je veux l'ouvrir une autre fois ça ne marche pas, parce que l'objet n'est pas null :S
Merci pour l'aide, je cherche encore une solution pour contourner ce problème.
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019

Voilà j'ai résolu le problème, c'est un peu bête et compliqué mais l'essentiel c'est que ça marche ;-)
L'objet qui représente le formulaire fils dans le formulaire parent est déclaré publique et statique, pour qu'on puisse lui affecter la valeur null depuis le formulaire fils dans la zone de l'évènement "formclosed".
Merci krimog
PS : belle citation
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019

Bon voilà, pour illustrer le l'explication que j'ai donné en dessus, j'ai déposé un petit exemple ici
Cordialement.

SimO TM