Cacher la winform principal [Résolu]

AzevedoSt27 65 Messages postés mercredi 10 novembre 2010Date d'inscription 27 mai 2012 Dernière intervention - 14 mai 2012 à 15:24 - Dernière réponse : AzevedoSt27 65 Messages postés mercredi 10 novembre 2010Date d'inscription 27 mai 2012 Dernière intervention
- 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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 21 mai 2012 à 10:39
3
Merci
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é. -

Merci krimog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de krimog
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 14 mai 2012 à 15:45
0
Merci
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)).
Commenter la réponse de cs_L0ci
AzevedoSt27 65 Messages postés mercredi 10 novembre 2010Date d'inscription 27 mai 2012 Dernière intervention - 14 mai 2012 à 15:58
0
Merci
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
Commenter la réponse de AzevedoSt27
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 14 mai 2012 à 16:02
0
Merci
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.
Commenter la réponse de cs_L0ci
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 14 mai 2012 à 16:06
0
Merci
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é. -
Commenter la réponse de krimog
AzevedoSt27 65 Messages postés mercredi 10 novembre 2010Date d'inscription 27 mai 2012 Dernière intervention - 14 mai 2012 à 16:40
0
Merci
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
Commenter la réponse de AzevedoSt27
cs_L0ci 224 Messages postés vendredi 26 novembre 2010Date d'inscription 11 juin 2013 Dernière intervention - 14 mai 2012 à 16:44
0
Merci
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.
Commenter la réponse de cs_L0ci
krimog 1863 Messages postés lundi 28 novembre 2005Date d'inscription 14 février 2015 Dernière intervention - 14 mai 2012 à 17:22
0
Merci
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é. -
Commenter la réponse de krimog
AzevedoSt27 65 Messages postés mercredi 10 novembre 2010Date d'inscription 27 mai 2012 Dernière intervention - 21 mai 2012 à 09:14
0
Merci
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
Commenter la réponse de AzevedoSt27
AzevedoSt27 65 Messages postés mercredi 10 novembre 2010Date d'inscription 27 mai 2012 Dernière intervention - 21 mai 2012 à 11:13
0
Merci
Merci Krimog :)

J'ai tous compris maintenant !!!

A bientot

AzevedoSt
Commenter la réponse de AzevedoSt27

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.