Détecter quand la fenêtre est minimisée

Signaler
Messages postés
33
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
26 février 2008
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
Bonjour,

Je voudrais que mon application puisse savoir quand elle est minimisé.
Lorsque l'utilisateur click sur le bouton dans la barre de tache c bon mais lorsque qu'il click sur le bouton "Bureau" dans la zone de lancement rapide, je n'arrive pas à faire en sorte que l'application sache qu'elle est minimisé.

Suis-je assez clair ??

Merci d'avance.

8 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Salut

Si tu t'inscris a l'evenement Resize de ta form, et que dans la méthode associée à l'évènement tu mets

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

   //ton code
}

Ca fonctionne parfaitement

Mx
MVP C# 
Messages postés
33
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
26 février 2008

Je viens de tester et celà marche parfaitement sauf dans certains cas (les miens ;) ) : si l'on configure la fenetre pour quelle n'apparaise pas dans la barre des tâches ou si on l'a configure pour quelle n'est pas de bordure, celà ne marche pas !!

Y aurai t il une autre solution ?

Merci d'avance.
Messages postés
33
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
26 février 2008

PS : la propriété this.WindowState reste à
FormWindowState.Normal
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Salut,
Si ShowInTaskbar
= false, la méthode donnée par MorpionMx fonctionne tout à fait.
Dans l'autre cas, je ne vois pas comment tu peux minimiser (hormis en le codant toi-même) ta fenêtre si elle n'a pas de bordure (car pas de bordure = pas de bouton minimized).

<hr size="2" />-Blog-
Messages postés
33
Date d'inscription
vendredi 28 février 2003
Statut
Membre
Dernière intervention
26 février 2008

L'utilisateur peut minimiser une fenetre sans bordure en cliquant sur le bouton "Bureau" (bouton qui permet de minimiser toute les fenetres et qui se trouve à coté du bouton Démarrer de Windows).

Lorsque ce bouton est utilisé, l'application ne reçoit pas d'évènement resize ou autre et si l'on regarde la valeur de WindowState, elle reste à Normal.
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
Ha oui mais là c'est externe à l'application. Hum, tu seras obligé de passer par les APIS je crois...

<hr size="2" />-Blog-
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
46
Le Managed Spy++ ne detecte aucun evenement en tout cas :/
Faudra voir ce que spy++ nous dit

Mx
MVP C# 
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
85
Salut,

Une des solutions serait de reforcer le style WS_MINIMIZEBOX à la création de la fenêtre afin de recommence à recevoir la notification de changement de taille.

private const int WS_MINIMIZEBOX = 0x00020000;



protected override CreateParams CreateParams
{
    get
    {
        CreateParams param = base.CreateParams;


        param.Style |= WS_MINIMIZEBOX;

        return param;
    }
}








/*
coq
MVP Visual C#
CoqBlog
*/