NotifyIcon + problème...

Signaler
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Messages postés
36
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
11 décembre 2006
-
Salut à tous,



J'ai encore un problème avec notifyicon ca ressemble un peut à celui
resolu par coq y'a pas longtemps sauf que là c'est pas vraiment pareil,
faut bien varier les plaisirs :



J'ai form1 et form2 :



Form1 sert pour se loguer :



// si login et mot de passe correct alors :

this.Visible = false ; // form se loguer devient invisible
Form2 form2 = new Form2(bdd) ; // form2 est crée
form2.ShowDialog() ; // form2 est lancé
this.Visible = true ; //quand form2 est quitter ou devient invisible



et form2 contient un notifyicon



et en faite dans form2 quand je clique sur la croix form2 devient
invisible de manière à ce qu'il reste juste le notifyicon, le problème
c'est que ce si form2 est invisible le code souligné plus haut se
declenche donc ma form1 redevient visible...



A votre bon coeur

9 réponses

Messages postés
36
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
11 décembre 2006

Satut, tiens je te file mon code que j'utilise pour gérer ma notify icon je sais pas si sa te serviras car j'ai pas tout pigé à ton problème...

mais bon .. :)

private void
Form1_Resize(
object
sender, System.EventArgs e)

{
if (
this
.WindowState == FormWindowState.Minimized)

this.cacherForm();
}


private
void
RevoirForm()

{
this.ShowInTaskbar =
true
;

this.Show();

this.WindowState = FormWindowState.Normal;

this.invisible =
false
;

this.BringToFront();

}


private
void
cacherForm()

{
this.ShowInTaskbar =
false
;

this.Hide();

this.invisible =
true
;

}


private
void
notifyIcon_serveurON_DoubleClick(
object
sender, System.EventArgs e)

{
if (
this
.invisible)

{
this.RevoirForm();

}
else

{

this.cacherForm();

}
}




private
void
menuItem_reduire_Click(
object
sender, System.EventArgs e)

{
this.cacherForm();

}

A+,
Seb.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
Salut,

Quand tu cliques sur la croix le formulaire n'est pas invisible mais fermé.
Si tu veux eviter ça dans Form2 tu peux faire ça :
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true; // annule la fermeture
this.Visible = false; // masque le formulaire
base.OnClosing (e);
}

/*
coq
MVP Visual C#
*/
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
BonTantPisJAvaisQuARefresh ™

/*
coq
MVP Visual C#
*/
Messages postés
36
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
11 décembre 2006

oui voilà c'est aussi ce que je fais pour cacher la form au clic de la croix :


private
void
Form1_Closing(
object
sender, System.ComponentModel.CancelEventArgs e)

{
this.Visible =
false
;

e.Cancel= true;
}

(par contre je vois pas la necessité du override...)

++,
Seb.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
C'est pourtant l'override qui est conseillé plutôt que l'abonnement du Form à son propre event. :-)
C'est la méthode OnClosing qui est chargée de lever l'event Closing.

/*
coq
MVP Visual C#
*/
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
Ben en faite dans Form1, le gars se logue, donc y'a Form2 qui apparait
avec un notifyicon. Quand je clique sur la croix dans Form2 je rend
Form2 invisible mais manque de bol le faite que Form2 soit invisible
delenche :



this.Visible = true ; //quand form2 est quitter ou devient invisible



donc Form1 (la page pour se loguer) redevient visible ce qui
fait c'est pas bon... Ca marcherait si j'avais pas une Form pour se
loguer avant en faite.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
Ah oui, j'avais oublier que le comportement de la fermeture d'une boite modale est un peu différente.
D'ailleurs pourquoi passes tu par ShowDialog et non pas par Show (en déclarant ton instance de Form2 ailleurs que dans la corps de la méthode naturellement) ?

/*
coq
MVP Visual C#
*/
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
ben je sais pas ca me parraissait plus logique, je vais esasyer avec show
Messages postés
36
Date d'inscription
lundi 3 janvier 2005
Statut
Membre
Dernière intervention
11 décembre 2006

Coq : C'est la méthode OnClosing qui est chargée de lever l'event Closing.

Merci du conseil
a+,
Seb.