SYSTEMTRAY - NOTIFYICON

cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
- 20 mai 2004 à 21:58
cs_CrazyBlade
Messages postés
2
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
28 février 2012
- 2 mars 2012 à 09:07
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23003-systemtray-notifyicon

cs_CrazyBlade
Messages postés
2
Date d'inscription
mardi 17 mars 2009
Statut
Membre
Dernière intervention
28 février 2012

2 mars 2012 à 09:07
Merci !
Derdonn
Messages postés
13
Date d'inscription
jeudi 15 octobre 2009
Statut
Membre
Dernière intervention
29 octobre 2013

13 juil. 2011 à 00:21
Le code est FAUX! Quand on met "ShowInTaskbar False" ça signifie que lorsque l'on minimise la fenêtre, celle-ci est réduite sur le bureau au lieu d'être rangée dans la barre des tâches. La bonne manière de faire est "Visible False". En résumé :

this.Hide() dans le Form_Load

private void Form1_Resize(object sender, EventArgs e) {
if (this.WindowState == FormWindowState.Minimized ) {
this.Hide();
notifyIcon1.Visible = true;
}
}
private void notifyIcon1_DoubleClick(object sender, EventArgs e) {
this.Show();
this.WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false;
}
deck_bsd
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
2
8 mars 2010 à 20:03
@Shinkan :

Esseye ceci , c'est ce que j'ai fait et ça marche bien :)

private void Form1_Shown(object sender, EventArgs e)
{
this.Hide();
}
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
7 juil. 2005 à 23:20
Effectivement.
Il y avait peut être (ou peut être pas^^) une bonne raison à l'époque, mais là c'est vrai que le Hide suffit.
MorpionMx
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Membre
Dernière intervention
30 octobre 2008
56
5 juil. 2005 à 15:51
Petite question surement tres bete (mais j'arrive pas a trouver la réponse), pourquoi t'occuper du ShowInTaskbar ?
Parce que si tu mets juste

private void Form1_Resize(object sender, System.EventArgs e)
{
if ( this.WindowState == FormWindowState.Minimized) this.Hide();
}

private void RevoirForm ()
{
this.Show();
this.WindowState = FormWindowState.Normal;
}

j'ai l'impression que ca fait pareil. J'essaie de chercher une petite différence mais la vois pas :/
cs_lagoelle
Messages postés
102
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
17 mars 2009

8 févr. 2005 à 20:23
Yep ! Bien vu coq ;-D

En effet, ça fonctionne nickel

Merci

@ plus

lagoelle
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
8 févr. 2005 à 13:37
Reponsable : affectation de ShowInTaskbar => en le mettant avant l'appel de Show résoud le problème...

private void RevoirForm ()
{
// reaffiche dans la barre des taches
this.ShowInTaskbar = true;

// reaffiche le form
this.Show();

// remet la taille normale
this.WindowState = FormWindowState.Normal;
}

Je modifie le zip -_-
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
8 févr. 2005 à 13:29
effectivement
et si je supprime le linklabel c'est le bouton qui redevient visible o_O
quelqu'un peut confirmer ?
cs_lagoelle
Messages postés
102
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
17 mars 2009

8 févr. 2005 à 13:18
Salut coq

J'ai posé sur la form dans ton projet, différents controles:
linkLabel, textBox,DataGrid,CheckBox,RadioButton,Label,Button,panel, et au réaffichage de la form (après réduction), seul le linklabel était visible...

De ton coté, ça a donné quoi ?

@ plus

lagoelle
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
7 févr. 2005 à 13:11
Je n'ai jamais rencontré ce problème.
Si tu veux demander a un controle de se redessiner regarde du coté de la methode Invalidate (http://msdn.microsoft.com/library/fre/default.asp?url=/library/fre/cpref/html/frlrfSystemWindowsFormsControlClassInvalidateTopic.asp)
Sinon j'essaierais de voir ce soir si j'arrive à reproduire ce comportement pour voir.
cs_lagoelle
Messages postés
102
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
17 mars 2009

7 févr. 2005 à 12:32
Salut,

D'abord, bravo coq pour cette source didacticielle ;-)

Ca fonctionne bien, par contre quand on réagrandit la form certains controls ne sont pas redessinés :s ...

Plus concretement, j'utilises le control nicePanel (que je vous conseilles d'autant qu'il est gratuit...) de chez PureComponents et la form se fige, même la croix n'est pas clickable... et la form est vierge...

Ce problème se pose également avec d'autres controls qui ne sont pas des controls "utilisateurs".

Vois tu une solution pour ce soucis ?

Je penses qu'il faut forcer l'appli à redessiner la form entièrement avec paint ou autre chose, mais je ne maitrise pas encore suffisamment C# pour savoir comment faire... :-(

Merci d'avance pour ton aide.

@ plus

lagoelle
patemino
Messages postés
80
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
22 mars 2007

30 juin 2004 à 19:19
D'accord merci bien pour ta source et tes réponses !
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
30 juin 2004 à 15:40
juste avec
notifyIcon.ContextMenu = this.contextMenu;
qui associe notre ContextMenu au NotifyIcon

tu ne peux pas te servir de Show pour faire apparaitre le menu au niveau du NotifyIcon comme cet objet n'herite pas de Control

par contre rien ne t'empeche de le faire apparaitre au niveau d'un bouton (par exemple) :
contextMenu.Show(monButton, new Point(0, monButton.Height));
patemino
Messages postés
80
Date d'inscription
lundi 28 juillet 2003
Statut
Membre
Dernière intervention
22 mars 2007

30 juin 2004 à 15:10
Bravo pour cette source / tuto,

J'ai quand même une question :
Tu as un menu appelé contextMenu et tu veux qu'il apparaisse lorsque tu clique avec le bouton droit sur l'icone dans le systray tu fais comment ?

tu crée un evenement NotifyIcon_clickdroit qui lance ca ?

contextMenu.Show(argument1,argument2);

Dans ce cas là quel est la syntaxe de ces deux arguments ?
shinkan
Messages postés
14
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
14 avril 2005

23 mai 2004 à 11:28
Non, les forms me sont bien utiles, j'en utilise une autre comme boite de dialogue, et celle que je cache (que je voudrais cacher ...) dès le début me sert à contenir les diverses options du prog ... et en plus j'y connais rien aux services ...
Tsu91
Messages postés
41
Date d'inscription
mardi 27 janvier 2004
Statut
Membre
Dernière intervention
11 septembre 2005

23 mai 2004 à 09:47
Je savais utiliser déja le system des icon en tray, mais je te félicite, c'est concis et efficace, mais c'ets vrais qu'il manque un poil d'explication pour les vrai déutant je pense :)
en tout cas c'est bien joué ^o^
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
23 mai 2004 à 08:08
du fait que le form n'est pas encore mit en place je pense

utilise les propriétés WindowsState (sur Minimized) et ShowInTaskbar (sur false) au moment du design

enfin a ce niveau là je me demande si le form est bien necessaire, il ne vaudrais pas mieux faire un service ?
shinkan
Messages postés
14
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
14 avril 2005

22 mai 2004 à 23:04
Bon source, bien commenté.
Néamoins j'ai un problème : je n'arrive pas à cacher une form lors de son démarrage (event _Load). Je suis en train de refaire en C# une appli que j'avais fait en VB6, le programme n'avait pas de fenetre visible, juste un icone dans le systray avec un menu ...
Seulement sous C#, impossible de cacher ma form dès le démarrage de l'appli, j'utilise dans l'event _Load la syntaxe suivante :

this.Hide();

Celle si fonctionne très bien pour tout autre event (click ...), mais pas au démarrage, comment faire ?
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
20 mai 2004 à 22:11
de rien
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
20 mai 2004 à 22:06
ok je te remerci pour cette source et pour tes explications
cs_coq
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
2 août 2014
99
20 mai 2004 à 22:03
euh non
l'icone apparait au lancement et part a la fermeture de l'appli
this.ShowInTaskbar = true; permet de reactiver l'affichage du form dans la barre des taches (pas le systemtray)
si tu veux gerer l'apparition/disparition de l'icone : notifyIcon.Visible=true/false
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
20 mai 2004 à 21:58
pourrais-tu m'expliquer un peu la source, car j'avoue que j'ai un peu de mal à comprendre...
la mise de l'icone dans la sytray et simplement fait par cette instruction: "this.ShowInTaskbar = true;" ?

ensuite y a des truc a ajouter comme des genre d'ocx ou des trucs comme ca? (dsl suis debutant je pose beaucoup de question)