Comment minimiser la forme de la barre des tâches?

J’ai développé l’application Winform et j’ai défini formborderstyle = none. C’est pourquoi, lorsque j’exécute une application, je ne peux pas la réduire grâce à la barre des tâches. Est-ce que tout organisme connaît la solution pour cela?

J’ai essayé de suivre le code .. en l’ajoutant dans mon formulaire.

const int WS_CLIPCHILDREN = 0x2000000; const int WS_MINIMIZEBOX = 0x20000; const int WS_MAXIMIZEBOX = 0x10000; const int WS_SYSMENU = 0x80000; const int CS_DBLCLKS = 0x8; protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style = WS_CLIPCHILDREN | WS_MINIMIZEBOX | WS_SYSMENU; cp.ClassStyle = CS_DBLCLKS; return cp; } } 

Je suis maintenant capable de minimiser l’application de la barre des tâches. Mais le problème, c’est qu’il crée deux entrées de mon application, une dont j’ai besoin et l’autre qui n’est pas nécessaire.

Est-ce que quelqu’un connaît une solution pour cela .. ou quelqu’un a-t-il une autre solution qui fonctionne?

Un formulaire sans bordure doit toujours être un formulaire que l’utilisateur ne doit pas minimiser. Le principe de découvrabilité commence à s’appliquer ici: la plupart des utilisateurs ne savent pas que vous pouvez réduire une fenêtre en cliquant sur son icône dans la barre des tâches. Ils vont s’attendre à pouvoir le faire en cliquant sur le bouton à côté du grand x rouge. La bonne solution consiste à choisir un style de bordure différent pour votre formulaire, comprenant la barre de titre et la zone de réduction. Windows se comportera automatiquement comme prévu. Les choses sont beaucoup plus faciles lorsque vous suivez les conventions standard de votre plate-forme, non seulement pour vous en tant que programmeur, mais pour vos utilisateurs.
Il corrige également ce vilain scintillement lors de la création ou de la restauration de votre formulaire, où je peux voir la barre de légende standard pendant quelques secondes.

Bien sûr, vous souhaiterez inévitablement le faire de toute façon, alors malgré mon meilleur jugement, je vais essayer de fournir une solution. Le premier problème est que je ne peux pas reproduire le problème que vous décrivez (Windows Server 2008 R2, .NET 4.0). En ajoutant exactement le code affiché à un nouveau projet WinForms et en définissant la propriété FormBorderStyle du FormBorderStyle sur “Aucune”, il est impossible que deux fenêtres apparaissent. Cliquez sur l’icône de la barre des tâches pour réduire le formulaire. Cliquez à nouveau pour le restaurer.

Mais il existe un moyen de simplifier votre code. Et vous devriez probablement être OU les indicateurs de style que vous ajoutez avec les indicateurs de style existants, plutôt que de remplacer les indicateurs existants. Remplacez votre code par ceci:

 const int WS_MINIMIZEBOX = 0x20000; const int CS_DBLCLKS = 0x8; protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style |= WS_MINIMIZEBOX; cp.ClassStyle |= CS_DBLCLKS; return cp; } } 

Si cela ne résout pas votre problème (et je suis sceptique), alors, comme je le soupçonnais, il y a quelque chose d’autre qui cloche dans votre code et que vous ne nous avez pas montré . Le fait de pouvoir commenter quelques lignes de code et que votre programme fonctionne comme prévu ne signifie pas nécessairement que le problème réside dans ces lignes de code. Ils peuvent être parfaitement corrects, mais interférer avec un hack que vous avez utilisé ailleurs.