Ouvrir qu'une seul fois une autre fenetre

Résolu
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 19041 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 mai 2024 - 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 37
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
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
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
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

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

Posez votre question
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 19041 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 mai 2024 656
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
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
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#]
-1
Rejoignez-nous