Lancer form une seule fois.

SegmaMic Messages postés 10 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2010 - 22 avril 2010 à 09:08
cs_luminor Messages postés 30 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 24 mars 2011 - 27 avril 2010 à 11:23
Bonjour à tous,

J'ai créé une application et je souhaiterais qu'elle ne s'ouvre qu'une fois... Je m'explique :
Pour l'instant, si je clique 2x sur l'exécutable, elle se lance 2x.
Ce que j'aimerais, lors du 2ème clic, c'est que la 1ère passe simplement en avant plan, sans lancer une 2ème fois l'application.

J'ai déjà essayé pas mal de choses (openform, activeform, process en cours, visible, etc) mais toujours aucun résultat...

Voici mon code de base... (base de chez base)

Code :

static void Main()
        {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
        }

5 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
22 avril 2010 à 10:17
Salut tu trouveras plusieurs solutions dans ce thread :

[url]http://www.csharpfr.com/forum/sujet-OUVRIR-FICHIER-AVEC-SON-APPLICATION_889845.aspx/url
0
SegmaMic Messages postés 10 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2010
22 avril 2010 à 11:40
Merci, effectivement ce code avec les "Mutex" fonctionne bien :
     using System.Threading;
     .......
    
     // code mis dans Main d'une application windows form
    
     static void Main()
     {
         bool OK;
         string moiID="UNE CHAINE QUELCONQUE ET UNIQUE";
         Mutex moi=new Mutex(true,moiID,out OK);
         if(OK)
         {
            Application.Run(new Form1());
            moi.ReleaseMutex();
         }
         else
         {
             MessageBox.Show("Je tourne déja...");
         }
     }


Il ne lance bien l'application qu'une seule fois. Par contre, connais-tu une méthode pour "réafficher" la 1ère application en 1er plan ? (je ne sais pas si c'est possible)
0
cs_luminor Messages postés 30 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 24 mars 2011
27 avril 2010 à 09:46
Pour rendre le focus à ton form :

this.Activate();

active le formulaire et lui rend le focus.
0
SegmaMic Messages postés 10 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2010
27 avril 2010 à 10:59
Oui d'accord,
Mais comment "re-pointer" sur le 1er formulaire ?

Quand je clique la 1ère fois sur l'exécutable : il se lance normalement.
Si je clique une 2ème fois : le programme se relance quand même sans pour autant relancer un 2ème form (ça c'est bon), mais je ne peux pas faire un "this. Activate()" car je suis dans le 2ème programme...

(j'espère être clair)
0

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

Posez votre question
cs_luminor Messages postés 30 Date d'inscription mardi 27 avril 2010 Statut Membre Dernière intervention 24 mars 2011
27 avril 2010 à 11:23
Pour réactiver le focus de ma fenêtre principale (par exemple depuis une class présente dans mon namespace) j'utilise :

tonnamespace.leformulaireàactiver.ActiveForm.Activate();

tonnamespace = le namespace de ton projet
leformulaireàactiver = un Form présent dans ton projet Form1.cs par exemple
0
Rejoignez-nous