2010-09-25 21 views
1

Je développe une application Windows Form en C#. J'ai un formulaire principal appelé MainWindow et un objet NotifyIcon appelé notifyIcon qui appartient à la classe MainWindow.Appel NotifyIcon.ShowBalloonTip() d'une autre classe

Quelle est la meilleure façon pour moi d'utiliser notifyIcon d'autres classes?

Je sais que, sans une instance, je peux seulement accéder aux membres statiques publics de la classe, mais si je mets le notifyIcon en tant que static public, il arrête de fonctionner sur MainWindow.

Des idées?

Répondre

2

Si c'est la même application que vous pouvez utiliser

Application.OpenForms 

pour récupérer les formulaires ouverts.

Cette propriété renvoie un FormCollection, vous pouvez obtenir l'instance de formulaire à partir de là. More info here.

Si ce n'est pas le même assemblage see this.

+0

J'ai essayé ceci, mais quand je fais 'Form main = Application.OpenForms ["MainWindow"];', je ne parviens toujours pas à appeler une méthode publique de MainWindow. –

+0

@Jr. Il vous manque un casting. Ce n'est pas 'Form main'', il devrait être' var main = Application.OpenForms ["MainWindow"] comme YourFormThatInheritsFromForm; '. 'Form' ne connaît pas votre méthode, seule la classe enfant le sait. – BrunoLM

+0

Cela fonctionne. Je vous remercie. –

0

Vous pouvez exposer une méthode publique sur le formulaire. Cette méthode peut appeler en interne les méthodes sur notifyicon

+0

Je pense que pour accéder à une méthode publique, vous devez créer un objet de ce formulaire, et si vous créez un nouvel objet de ce formulaire, il y aura 2 icônes de notification. – Searock