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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 57
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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 9
20 mai 2004 à 22:06
ok je te remerci pour cette source et pour tes explications
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
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 9
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)
Rejoignez-nous