2011-02-04 3 views
9

Comment spécifier l'icône que MessageBox doit utiliser dans la barre des tâches? Il n'y a pas de surcharge MessageBox.Show qui me permet de sélectionner une icône de la barre des tâches, seulement une icône à utiliser dans le formulaire actuel.Spécifier l'icône de la barre des tâches pour un MessageBox

+0

Pourquoi avez-vous un 'MessageBox' apparaître sur la barre des tâches de toute façon? La seule façon qui peut arriver est si vous ne lui attribuez pas un parent. –

+0

Depuis ce sont les plugins qui affichent les boîtes de message et ils n'ont pas accès au formulaire principal. – jgauffin

+0

Peut-être que vous ne devriez pas permettre/attendre que vos plugins affichent l'interface utilisateur par eux-mêmes. Fournissez-leur une référence à une interface (telle que IMessageBox) sur laquelle ils peuvent s'appeler. Que vous, en tant qu'application hôte, pouvez fournir une implémentation correcte (y compris parent, etc.). –

Répondre

7

Je ne pense pas qu'il soit possible de changer l'icône de la barre des tâches; votre seule option serait de créer votre propre MessageBox.

3

Réponse courte: Vous ne pouvez pas.

Réponse courte # 2: Vous devez créer votre propre formulaire et l'afficher manuellement.

0

Pour pouvoir afficher une icône pour un MessageBox à barre des tâches, j'ai trouvé un moyen d'éviter la création de formulaire personnalisé, mais en quelque sorte, nous allons créer une forme fictive (ou vous pouvez le changer en forme anonyme):

 using (Form dummy = new Form() { 
         Icon = Properties.Resources.ico_Main_Logo 
         , TopMost = true 
         , FormBorderStyle = System.Windows.Forms.FormBorderStyle.None 
         , Size = new System.Drawing.Size(0,0) 
         , BackColor = Color.White 
         , TransparencyKey = Color.White 
        }) 
     { 
      dummy.Show(); 
      MessageBox.Show(dummy, "This is a MessageBox with Icon at Taskbar and on top of all windows", "Title Text", MessageBoxButtons.OK, MessageBoxIcon.Information); 
     } 

Avec bien au-dessus, ces fonctionnalités utiles seront possibles:

  • Afficher l'icône pour MessageBox à la barre des tâches. (J'utilise le paramètre d'application pour charger une icône, vous pouvez le faire à partir du disque ou ...)
  • Afficher MessageBox Afficher en haut des autres fenêtres. (Si vous ne le voulez pas, réglez TopMost = false)
  • Ne pas afficher MessageBox Icône dans la barre des tâches. (Il suffit de parapher un simple formulaire à l'utilisation et de supprimer la ligne dummy.Show();.)

Ou tout simplement initial sous forme anonyme comme celui-ci pour cacher MessageBox Icône de la barre des tâches:

MessageBox.Show(new Form(), "This is a MessageBox Hide it from Taskbar", "Title Text", MessageBoxButtons.OK, MessageBoxIcon.Information); 

Quoi qu'il en soit, je veux juste partager mon nouveau fonde donc ça peut aider les autres aussi. Je vous remercie.

Cela fonctionne bien, Mais je ne sais pas pourquoi même quand je mis Size du formulaire pour (0, 0)-il encore une taille de 131x37 !!! Mais comme le formulaire est défini en tant que transparence, il ne sera pas visible et le pointeur de la souris cliquera.

Questions connexes