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

cs_grami 7 Messages postés dimanche 2 mars 2003Date d'inscription 10 janvier 2007 Dernière intervention - 15 déc. 2006 à 11:24 - Dernière réponse : Whismeril 11404 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention
- 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 

9 réponses

sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 15 déc. 2006 à 11:47
+3
Utile
1
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#]
Cette réponse vous a-t-elle aidé ?  
Merci de l'info cela a résolu le problème
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 15 déc. 2006 à 11:34
0
Utile
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#]
Nikoui 794 Messages postés vendredi 24 septembre 2004Date d'inscription 19 août 2008 Dernière intervention - 15 déc. 2006 à 11:38
0
Utile
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.
cs_grami 7 Messages postés dimanche 2 mars 2003Date d'inscription 10 janvier 2007 Dernière intervention - 15 déc. 2006 à 11:41
0
Utile
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();
ISABELLE6558 15 Messages postés lundi 12 mai 2003Date d'inscription 1 mars 2007 Dernière intervention - 18 déc. 2006 à 22:29
0
Utile
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();
        }
bossun 175 Messages postés lundi 3 mars 2003Date d'inscription 15 décembre 2010 Dernière intervention - 23 janv. 2007 à 12:05
0
Utile
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>
DevLama 353 Messages postés mercredi 13 avril 2011Date d'inscription 10 janvier 2018 Dernière intervention - 2 juil. 2017 à 00:01
0
Utile
1
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 11404 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 19 avril 2018 Dernière intervention - 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

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.