Cacher la winform principal

Résolu
AzevedoSt27 Messages postés 65 Date d'inscription mercredi 10 novembre 2010 Statut Membre Dernière intervention 27 mai 2012 - 14 mai 2012 à 15:24
AzevedoSt27 Messages postés 65 Date d'inscription mercredi 10 novembre 2010 Statut Membre Dernière intervention 27 mai 2012 - 21 mai 2012 à 11:13
Bonjour,

J'ai une application avec une winform et un icone de notification avec un menu strip. mon but serais lorsque je lance mon programme juste l'icone de notif apparait et des que je clique sur l'icone le menu strip apparait et si je clique sur afficher la fenetre s'ouvre et si je ferme la fenetre le programmme ne se ferme pas mais enleve juste la winform.

Quelqu'un sait-il comment faire ?

Merci de votre aide.

AzevedoSt

10 réponses

krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
21 mai 2012 à 10:39
Je ne suis pas sûr de bien comprendre.

Ton form peut être créé parfaitement normalement. La seule différence, c'est le fait qu'il ne faut pas appeler le new dans Application.Run().

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
3
cs_L0ci Messages postés 224 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 11 juin 2013 7
14 mai 2012 à 15:45
Bonjour,

Tu peux utiliser la propriété visible = false.
Cependant je ne suis pas sur que cela fonctionne sur le form pricipal. Apres il doit être possible de mettre l'opacité a 0.
Une méthode qui fonctionne mais (qui n'est pas très propre) c'est de donner des coordonnées hors de l'écran a ton form (ex (-1000,-1000)).
0
AzevedoSt27 Messages postés 65 Date d'inscription mercredi 10 novembre 2010 Statut Membre Dernière intervention 27 mai 2012
14 mai 2012 à 15:58
Salut Loci,

J'ai essayé ta propriété visible mais rien ne ce passe sur mon load form.

J'aimerais si possible quelque chose de propre.

Merci de ton aide ;)

AzevedoSt
0
cs_L0ci Messages postés 224 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 11 juin 2013 7
14 mai 2012 à 16:02
Salut,

Eh bien je n'ai eu qu'une seule fois à effectuer ce genre d'application et j'ai du me rabattre sur les coordonnées négatives pour masquer mon form. Plus qu'à espérer que quelqu'un de plus doué passe par la . Je serai content de connaitre une autre façon de faire aussi.
0

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

Posez votre question
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
14 mai 2012 à 16:06
Salut

Voici un code (pas propre, car je suis pressé) qui permet de faire ce que tu veux.

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // L'icône n'est absolument pas liée à la form
            NotifyIcon ni = new NotifyIcon();
            ni.Click += new EventHandler(ni_Click);
            ni.Text = "Test";
            ni.Icon = new System.Drawing.Icon(@"...");

            // On prépare la fenêtre à afficher ou cacher
            f = new Form1();
            f.FormClosing += new FormClosingEventHandler(f_FormClosing);

            ni.Visible = true;
            // Le Application.Run() ne prend pas d'argument, 
            // puisqu'il n'y a pas de form principale.
            Application.Run();
        }

        static Form1 f;

        static void f_FormClosing(object sender, FormClosingEventArgs e)
        {
            // Lorsqu'on clique sur la croix, on cache la fenêtre
            ((Form1)sender).Hide();
            // Mais on ne la ferme pas (ainsi, toutes les données
            // restent les mêmes)
            e.Cancel = true;
        }

        static void ni_Click(object sender, EventArgs e)
        {
            // Lorsqu'on clique sur l'icône, on affiche la form
            f.Show();
        }


Tu peux donc t'en INSPIRER (car comme je le dis, il n'est pas propre) pour comprendre comment faire.

Surtout, n'oublie pas de faire un moyen pour quitter ton application.
Application.Exit();


Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
AzevedoSt27 Messages postés 65 Date d'inscription mercredi 10 novembre 2010 Statut Membre Dernière intervention 27 mai 2012
14 mai 2012 à 16:40
Salut krimog,

J'ai regarder ton code mais j'ai deja une winform avec un notif et un menu strip.

Alors je sais pas comment implementer ton code dans le miens...

Désoler debutant.

AzevedoSt
0
cs_L0ci Messages postés 224 Date d'inscription vendredi 26 novembre 2010 Statut Membre Dernière intervention 11 juin 2013 7
14 mai 2012 à 16:44
Salut,

Ce code se met dans le program.cs. En effet il faut que tu enlèves ta notifyIcon de ton form un et la déclarer dans le même fichier.
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
14 mai 2012 à 17:22
Pour résumer :

Ta NotifyIcon doit être indépendante de la fenêtre que tu souhaites afficher ou cacher.

Si j'ai bien compris, ton but est de n'avoir RIEN d'affiché au départ, à l'exception de l'icône de notification.
Le point d'entrée d'un programme (Winforms comme console) est la méthode
static void Main();
// Ou
static void Main(string[] args);

Lorsque tu crées un projet, cette méthode se trouve dans le fichier Program.cs.

De base, voici le code à l'intérieur de cette méthode :
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());


Les deux premières lignes initialisent le style des fenêtres de l'application. La deuxième ligne ouvre et affiche une Form1, et crée une boucle sans fin tant que la Form1 créé n'est pas fermée.

Notre but est différent. On souhaite bien créer une Form1, mais pas quitter l'application à sa fermeture, ni afficher la Form1 dès le lancement de l'application.

Pour ça, il faut préparer (dans le fichier Program.cs) ta NotifyIcon (avec Menu Strip et tout, si tu veux), lui attacher un événement permettant d'afficher ta Form1 (dans mon exemple, l'événement Click), préparer ta Form1 (mais sans l'afficher).
Enfin, tu affiches l'icône de notification (Visible = true;), et tu lances la boucle infinie (Application.Run()) sans argument.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
0
AzevedoSt27 Messages postés 65 Date d'inscription mercredi 10 novembre 2010 Statut Membre Dernière intervention 27 mai 2012
21 mai 2012 à 09:14
Salut Krimog,

S'est deja plus clair pour moi ^^

Mais si je veux que ma form aie des outils je dois les ajoutés un par un ou puis-je crée un form et l'appeler par la suite.

Merci

AzevedoSt
0
AzevedoSt27 Messages postés 65 Date d'inscription mercredi 10 novembre 2010 Statut Membre Dernière intervention 27 mai 2012
21 mai 2012 à 11:13
Merci Krimog :)

J'ai tous compris maintenant !!!

A bientot

AzevedoSt
0
Rejoignez-nous