IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

IconeTray, problème pour réafficher le logiciel


Sujet :

C#

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut IconeTray, problème pour réafficher le logiciel
    Bonsoir,

    Je souhaite que lors du lancement de mon logiciel, son icône apparait dans la zone de notification et qu'en cas de double clic que cette icône, si le logiciel est ouvert ça le réduit, retire l'icône de la barre du bas et laisse uniquement celle dans la zone de notification, si le logiciel est réduit ça l’agrandit à nouveau pour l'afficher et remet son icône dans la barre du bas.

    Pour cela j'ai placé un notifyIcon et j'ai utilisé ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                if (this.WindowState == FormWindowState.Minimized)
                {
     
                    this.WindowState = FormWindowState.Normal;
                    Show();
                }
                if (this.WindowState == FormWindowState.Normal)
                {             
                    this.WindowState = FormWindowState.Minimized;
                    Hide();
                }
            }
    Au lancement tout se passe comme prévu. Je double clic dessus, l'icône disparait de la barre du bas et le logiciel n'est plus affiché sur l'écran. Là aussi ça se passe comme prévu. Le problème survient lorsque j'effectue à nouveau un double clic pour réafficher le logiciel. L'icône est bien rajoutée dans la barre du bas mais le logiciel ne s'ouvre pas, même si je clique sur son icône qui vient d'être rajoutée dans la barre du bas.

    Avez vous une idée de l'origine de ce problème ?

    Merci d'avance

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Essai ceci :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (this.WindowState == FormWindowState.Minimized)
    {
       Show(); 
       this.WindowState = FormWindowState.Normal;
    }

    La propriété WindowState n'est "active" que lorsque le formulaire est visible. S'il n'est pas visible (caché, pas minimisé) alors cette propriété à la dernière valeur que disposait cette propriété avant que le formulaire ne soit masqué. Affecter une valeur alors que le formulaire n'est pas visible est sans effet.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    Bonjour,

    Maintenant lorsque je double clique ça s'affiche moins d'une seconde et disparait immédiatement. J'ai aussi testé avec un clic simple.
    Lorsque ça s'affiche, l'icône apparaît dans la barre du bas mais disparaît aussi en moins d'une seconde.

    Bonne fin de journée

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Bizarre. Peut être un bug.

    Quoiqu'il en soit, si ton bug est juste de masquer/afficher la fenêtre sur un double-clic, pourquoi vouloir gérer à la fois sa visibilité via Hide/Show et son statut normal/minimisé ?

    Essai ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
       if (this.Visible)
       {
          Hide();
       }
       else
       {
          Show();
       }
    }
    [edit]
    En fait, il ne s'agit pas d'un bug, mais d'une erreur dans ton code de départ.
    Tes deux conditionnelles sont disjointes, et donc exécuter l'une après l'autre, alors que ce que tu souhaites c'est tester un cas, et s'il cela ne va pas tester l'autre.

    Aussi, quand tu rentres dans le premier if, tu affiches le formulaire. Une fois cela fait, tu arrives sur le second. Le formulaire étant affiché, il le masque. D'où l'apparition pendant 1s.

    Ou bien tu mets le second if dans la clause else du premier, ou tu utilises un switch sur la propriété WindowState...
    [/edit]
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    Effectivement là ça va mieux merci
    Je n'ai jamais utilisé la zone de notification, visiblement je ne savais pas trop ce que je faisais.

    Une autre solution c'est d'utiliser un contextMenu: http://www.codeguru.com/csharp/.net/...ystem-Tray.htm mais du coup ça ne fonctionne plus comme je le voulais du coup je garde votre bout de code.

    Merci

  6. #6
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 697
    Points
    10 697
    Billets dans le blog
    21
    Par défaut
    Relis mon précédent commentaire, car je l'ai modifié. J'ai trouvé l'erreur dans ton code
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  7. #7
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2011
    Messages : 273
    Points : 152
    Points
    152
    Par défaut
    Désolé pour le retard^^

    Là ça fonctionne parfaitement, merci. J'espère que ça servira à d'autres car vérifier si c'est visible au lieu de vérifier l'état de la fenêtre, c'était pas évident il fallait y penser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème pour installation de logiciels avec Kali Linux 1.0
    Par credo dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 08/04/2015, 01h04
  2. Problème java pour démarrer un logiciel de simulation Maplesim 6.2
    Par bendesarts dans le forum Général Java
    Réponses: 2
    Dernier message: 05/03/2014, 20h54
  3. Problème pour créer une installation de logiciel
    Par patoche.05 dans le forum Langage
    Réponses: 9
    Dernier message: 20/06/2013, 16h22
  4. [UBUNTU] Problème de compilation pour installer le logiciel irssi
    Par Creature_Funebre dans le forum Ubuntu
    Réponses: 4
    Dernier message: 29/04/2007, 18h09
  5. Problème pour récupérer la clé primaire
    Par caramel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2003, 13h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo