2013-07-14 3 views
0
this.ShowInTaskbar = false; 
this.WindowState = FormWindowState.Minimized; 
//this.visible = false (Hotkeys stop working forever but the grey rest of the form would disappear from above taskbar) 
ReRegisterHotkeys(); 

J'utilise le code ci-dessus pour réduire mon application avec une icône de plateau. Maintenant, le reste réduit de mon formulaire se bloque toujours dans le coin gauche à droite un peu au-dessus de la barre des tâches où réside le bouton de démarrage. Visible est seulement la barre de titre grise des formes avec le petit "x" pour le fermer et son texte de légende au-dessus de la barre de titre. C'est très bizarre. J'ai mis mon formulaire à "mimimized" et mis à ne pas montrer dans la barre des tâches et il le fait toujours. J'ai enregistré Hotkeys avec mon formulaire afin que je ne puisse pas le mettre à "invisible" sinon les raccourcis cessent de fonctionner même si je réinscris les Hotkeys après. Je n'ai pas encore trouvé d'alternative pour supprimer cette légende de forme minimisée autre que le mettre à "invisible" ou en supprimant sa barre de titre ce que je ne veux pas non plus faire. J'ai besoin de la barre de titre, l'icône de la barre de titre et la zone de contrôle de la barre de titre dans ce programme, le formulaire ne doit pas devenir une toolwindow ou sans frontières.Réduire une forme de fenêtre système dans la barre d'état en C# sans la voir suspendue où barre des tâches

Comment faire pour que ce reste gris du formulaire au-dessus de la barre des tâches disparaisse sans définir mon formulaire à une toolwindow et sans le rendre totalement invisible. Mes raccourcis clavier doivent toujours fonctionner après cela et le formulaire doit toujours conserver sa barre de titre, son icône et sa zone de contrôle lorsque je le remets à la normale. J'ai pris mon code de raccourci à partir de example. La seule différence est que j'ai emballé la procédure pour enregistrer le raccourci clavier dans une sous-fonction nommée "ReRegisterHotkeys()".

Important: Le problème avec la barre de titre indiquant que le formulaire est réduit n'est pas connecté avec les raccourcis clavier enregistrés. C'est un "problème C#" commun. Si j'ai un formulaire et que je le minimise et que je le mets à l'état invisible dans la barre des tâches il est toujours affiché la barre de titre avec le "x" dans la barre des tâches. Ce que je veux supprimer sans faire le formulaire invisible ou sans enlever le style de la fenêtre. "this.show" ou "this.hide" se comporte de la même manière que "this.visible = true/false" car les raccourcis clavier ont disparu. Je crée mon formulaire comme montré par défaut et je ne veux pas le créer déjà caché.

C'est ce qui ne doit pas être là - comment l'enlever sans blesser: enter image description here

+0

Il est clair que cela est une question XY. Substituez la méthode OnHandleCreated() dans votre classe de formulaire et définissez un point d'arrêt dessus. Il devrait frapper seulement une fois au démarrage. Si cela casse après cela, regardez dans la pile des appels pour trouver l'instruction dans votre code qui a recréé la fenêtre. Ceci est également la méthode où vous devez enregistrer les clés. –

Répondre

0

Tout ce que vous avez à faire est d'appeler Hide() et Show() quand vous voulez cacher et montrer votre formulaire. REMARQUE: Hide() sera également masqué dans la barre des tâches.

private void Form1_Resize(object sender, EventArgs e) 
{ 
    if (WindowState == FormWindowState.Minimized) 
     Hide(); 
} 

Vous pouvez cacher et montrer l'NotifyIcon opposée à la forme de ne pas avoir une icône lorsque le formulaire est affiché.

De toute évidence, vous avez besoin d'un NotifyIcon pour afficher votre application dans la zone de notification.

Enfin votre code ressemblera à ceci:

private void Form1_Resize(object sender, EventArgs e) 
{ 
    if (WindowState == FormWindowState.Minimized) 
    { 
     Hide(); 
     notifyIcon1.Visible = true; 
    } 
} 

private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) 
{ 
    Show(); 
    notifyIcon1.Visible = false; 
    WindowState = FormWindowState.Normal; 
} 
+0

alors pourquoi ne pas définir l'opacité du formulaire à 0% pour le cacher et 100% pour le montrer? –

+0

avez-vous également essayé d'enregistrer le raccourci clavier dans une classe séparée? comme sur ce fil: http: // stackoverflow.com/questions/2450373/set-globaux-hotkeys-using-c-sharp –

+0

J'ai réussi à utiliser les raccourcis clavier avec le lien ci-dessus avant en C#. Mais c'est à toi de voir. –

Questions connexes