Ouvrir qu'une seul fois une autre fenetre [Résolu/Fermé]

Messages postés
7
Date d'inscription
dimanche 2 mars 2003
Dernière intervention
10 janvier 2007
- - Dernière réponse : Whismeril
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
- 2 juil. 2017 à 08:39
bonjour,

voila mon probleme : jai une fenetre principale de la qu'elle j'ouvre une autre fenetre, juske la c bon le probleme et que qd je clik une autre fois sur le bouton pour ouvrir jai une autre fenetre qui s'ouvre ( exemple pour "a propos" je pe avoir 2 ou plus ouverte en meme temp )

comment resoudre ce probleme, merci

voila mon code pour ouvrir la fentre

            Form3 frm = new Form3();
            frm.Show();
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
3
Merci
merci.

Comme le dit Nikoui, utilise la méthode ShowDialog en lieu et place de la méthod Show()

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]

Merci sebmafate 3

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

Codes Sources a aidé 97 internautes ce mois-ci

Merci de l'info cela a résolu le problème
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Dernière intervention
14 février 2014
0
Merci
Salut...

tu peux reposer ta question en français sans utiliser de SMS ?

Réglement CodeS-SourceS

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
19 août 2008
0
Merci
En mettant le bout de code que tu cites dans ta méthode, tu instancie a chaque fois une nouvelle fenêtre. Plusieurs solutions à ton problème :

Dans le cadre de la fenêtre a propos, par exemple, tu peux l'afficher en "modale" (dans ce cas, il faudra que l'utilisateur la ferme avant de pouvoir revenir à la fenêtre précédente). Pour cela, remplace frm.Show() par frm.ShowModal();

Dans d'autre cas (ou tu ne veux pas qu'elle soit affichée en modale), tu peux soit déclarer ta fenêtre (frm) comme une variable de ta classe, et tester si elle est déjà affichée ou non avant de l'afficher le cas échéant.
Messages postés
7
Date d'inscription
dimanche 2 mars 2003
Dernière intervention
10 janvier 2007
0
Merci
desole :)


bonjour,

voila mon probleme
: jai une fenetre principale de la qu'elle j'ouvre une autre fenetre,
jusque la c'est bon le probleme et que qand je clik une autre fois sur le
bouton pour ouvrir jai une autre fenetre qui s'ouvre ( exemple pour "a
propos" je peux avoir 2 ou plus ouverte en meme temp )

comment resoudre ce probleme, merci

voila mon code pour ouvrir la fenetre

            Form3 frm = new Form3();
            frm.Show();
Messages postés
15
Date d'inscription
lundi 12 mai 2003
Dernière intervention
1 mars 2007
0
Merci
Bonjour,

La réponse ShowDialog est une réponse qui peut ne pas être totalement satisfaisante dans la mesure où la fenêtre ouverte est modale. Aussi j'ai essayé le petit bout de programme ci dessous pour ouvrir une fenêtre unique non modale. Il y a un petit problème si on ouvre et on ferme plusieurs fois le fenêtre on a une erreur  <ObjectDisposedException> que j'attrape mais celà ne me satisfait pas totalement, je préfèrerai une appli sans erreur.Il semble que _instance soit supprimé mais la variable n'est pas null Pourquoi cette erreur se produit-elle ?

public partial class Apropos : Form
    {
        private static Apropos _instance = null;

        private Apropos()
        {
            InitializeComponent();
        }

        public static void ShowUnique()
        {
            if (_instance == null)
                _instance = new Apropos();
            else
                _instance.Focus();
                
           try
           {
                _instance.Show();
           }
            catch (ObjectDisposedException e)
           {
               _instance = new Apropos();
               _instance.Show();
            }
        }

et dans la fenêtre principale l'appel de la fenêtre

        private void aProposToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Apropos.ShowUnique();
        }
Messages postés
175
Date d'inscription
lundi 3 mars 2003
Dernière intervention
15 décembre 2010
0
Merci
si tu dans un environnement MDI, tu as la propriété MDIChild de ta form principale qui liste tous les formulaires déjà ouverts....

sion tu es en environnement SDI, tu peux regarder la classe

Application.Openfroms

http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.application.openforms(VS.80).aspx

Bossun

P.S1  C'est mieux de prendre son pied que de se prendre la tête!

/F< body>
Messages postés
354
Date d'inscription
mercredi 13 avril 2011
Dernière intervention
22 novembre 2018
0
Merci
Bonsoir, Si ton problème reside sur le faite que tu ouvre plusieurs formulaires lorsque tu clique sur le Bouton alors que le formulaire était deja lancé, Si tu peux créer un Variable de static dans ton formulaire Principale qui q chaque qu'elle est a true qu'elle n'ouvre plus un formulaire
Whismeril
Messages postés
12368
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
11 décembre 2018
-
Bonjour, pas besoin d'une variable static, la bonne solution a été donnée le 18 décembre 2006, par Isabelle
http://codes-sources.commentcamarche.net/forum/affich-859762-ouvrir-qu-une-seul-fois-une-autre-fenetre#5

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.