Ouvrir qu'une seul fois une autre fenetre

Résolu/Fermé
cs_grami
Messages postés
7
Date d'inscription
dimanche 2 mars 2003
Statut
Membre
Dernière intervention
10 janvier 2007
- 15 déc. 2006 à 11:24
Whismeril
Messages postés
17328
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
- 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();

7 réponses

sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
15 déc. 2006 à 11:47
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#]
3
Merci de l'info cela a résolu le problème
0
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
15 déc. 2006 à 11:34
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#]
0
Nikoui
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
15 déc. 2006 à 11:38
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.
0
cs_grami
Messages postés
7
Date d'inscription
dimanche 2 mars 2003
Statut
Membre
Dernière intervention
10 janvier 2007

15 déc. 2006 à 11:41
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();
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ISABELLE6558
Messages postés
15
Date d'inscription
lundi 12 mai 2003
Statut
Membre
Dernière intervention
1 mars 2007

18 déc. 2006 à 22:29
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();
        }
0
bossun
Messages postés
173
Date d'inscription
lundi 3 mars 2003
Statut
Membre
Dernière intervention
15 décembre 2010
1
23 janv. 2007 à 12:05
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>
0
DevLama
Messages postés
356
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
18 novembre 2021
10
2 juil. 2017 à 00:01
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
0
Whismeril
Messages postés
17328
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
17 mai 2022
596
2 juil. 2017 à 08:39
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
0