J'ai une application winforms C# qui fonctionne en arrière-plan, en écoutant les raccourcis clavier à appuyer. Quand une touche de raccourci est pressée, ma forme fait une brève apparition. Le formulaire est toujours en cours d'exécution, mais mis à masqué jusqu'à ce que je reçois un événement de raccourci clavier, à ce moment, j'ai défini la propriété visible sur true. Le code ressemble à ceci:Comment empêcher mon application winforms C# de dérober le focus lorsque je mets le visible correctement à true?
void hook_volumeDown(object sender, KeyPressedEventArgs e)
{
this.Visible = true;
}
Il convient de noter que la propriété la plus haute de cette forme est définie sur true.
La partie vraiment étrange est, après que mon application C# a volé le focus d'une autre application, il ne le fera plus jamais. Par exemple: je lance mon application, puis lance une application fullscreep comme Team Fortress 2. Ensuite, j'appuie sur mon raccourci clavier. Team Fortress 2 minimise, et je vois ma forme. Ensuite, je peux restaurer TF2, et appuyer à nouveau sur ma touche de raccourci tout ce que je veux (avec l'effet désiré), et TF2 restera focalisé.
En tout cas, je cherche un moyen de résoudre ce problème. J'ai trouvé beaucoup de questions ici couvrant des problèmes similaires, mais toutes sont liées à la création/lancement d'un nouveau formulaire, et non à la création d'un formulaire existant (sauf si j'ai manqué quelque chose). Je pourrais retravailler l'application pour créer un nouveau formulaire à chaque fois que j'en aurais besoin, mais cela impliquerait de créer un autre formulaire invisible tout le temps juste pour attendre les raccourcis clavier, donc je préfère laisser ça tel quel.
Des idées?
Je ne suis pas sûr que je suis ... dites-vous que cela fonctionne comme il se doit * sauf * pour la toute première fois? –