Bonjour tout le monde,
J'ai l'impression que j'ai dû oublier un truc que j'ai su ...
J'ai écrit un éditeur de texte, qui dans l'ensemble fonctionne plutôt pas mal, sauf que l'utilisatrice a une fâcheuse tendance à donner de la souris où il ne faut pas, ce qui fait que l'application perd le focus.
Je pourrais mettre le formulaire en modal, mais ça me paraît un peu catégorique, des fois qu'il y ait vraiment quelque chose à aller voir dans les autres applications.
Alors ... Je me suis fait un nœud au cerveau, et j'ai écrit un timer pour vérifier si le verrouillage des majuscules a changé.
Si c'est le cas, en plus de changer la couleur de fond et émettre un bip, j'exécute ça :
Tant que c'est exécuté en débogage depuis Visual Studio, ça fonctionne impec.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 this.Activate(); this.BringToFront(); this.Focus();
Mais dès que l'application est lancée indépendamment, le changement de couleur de fond se fait mais l'application ne reprend pas le focus. Pas mieux avec SetForegroundWindow et SetActiveWindow.
Alors j'ai un peu triché :
Ça marche, mais je suppose qu'on doit pouvoir faire ça proprement ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 IntPtr hWnd = GetForegroundWindow(); if (hWnd != this.Handle) { SendKeys.SendWait("%{esc}"); }
Partager