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

Messages postés
21
Date d'inscription
jeudi 7 octobre 2004
Statut
Membre
Dernière intervention
5 mars 2018
- - Dernière réponse : anadeveloppeur
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019
- 17 juil. 2009 à 12:25
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();
}

 
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010
3
Merci
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...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 121 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Miltiades
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019
0
Merci
Bonjour.
Avez-vous résolu le problème? Sincèrement j'y suis bloqué !
Merci pour toute aide.
Commenter la réponse de anadeveloppeur
Messages postés
1863
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
24
0
Merci
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 ! -
Commenter la réponse de krimog
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019
0
Merci
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.
Commenter la réponse de anadeveloppeur
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019
0
Merci
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
Commenter la réponse de anadeveloppeur
Messages postés
156
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
21 février 2019
0
Merci
Bon voilà, pour illustrer le l'explication que j'ai donné en dessus, j'ai déposé un petit exemple ici
Cordialement.

SimO TM
Commenter la réponse de anadeveloppeur