2014-06-18 4 views
-2

Je suis/j'essayais de créer un événement auquel mon formulaire principal peut s'abonner. Cette classe sera finalement plus grande, c'est pour faire des infos/avertissements/informations d'erreur à l'observateur d'événements Windows (n'ont pas encore fait cette partie) mais il envoie aussi des informations sur le formulaire. J'ai utilisé des événements dans de nombreux endroits, mais c'est la première fois que j'essaie d'en faire un dans une classe statique. Je ne pensais pas qu'il y aurait des problèmes, mais je reçois cette erreur "raiseEventtoForm: ne peut pas déclarer les membres de l'instance dans une classe statique." Tous mes membres sont statiques, je ne sais pas pourquoi cela se passe. Est-ce que je ne peux pas produire d'événements dans une classe statique?Un événement statique tente de déclarer une instance non statique

Je ne trouve rien indiquant que je ne serais pas autorisé à le faire.

Modifier: délégué mis à jour pour ne pas avoir de mot-clé statique.

public static class HABLAEvents 
{ 
    public delegate void RaiseMessageEvent(string message, Color foreColor, Color backColor); 
    public static event RaiseMessageEvent trigger = delegate { }; 
    public static void MessageEvent(string message, Color foreColor, Color backColor) { trigger(message, foreColor, backColor); } 

    public static void raiseEventtoForm(string message, Color fc, Color bc) 
    { 
     MessageEvent(message, fc, bc); 
    } 
} 

Edit: Cette même erreur « ne peut pas déclarer les membres d'instance dans une classe statique » est également présent pour déclencheur et MessageEvent

+1

Je pense que cette ligne est incorrect: délégué static public void RaiseMessageEvent (message de chaîne, couleur foreColor, couleur backColor); un délégué est en fait un type il ne peut pas être statique ... –

+0

aussi la deuxième ligne devrait être déclencheur public événement statique RaiseMessageEvent; –

+0

Ouais- Quand j'ai fait un nettoyage/build ces erreurs en ligne ont disparu et il a surgi en disant que mon délégué ne pouvait pas avoir statique. J'ai enlevé ça et ça s'est bien passé. Je le teste pour m'assurer qu'il fonctionne ATM. Faire des modifications pour publier maintenant. – alykins

Répondre

1

ici, prendre un exemple:

using System; 

public static class Test 
{ 
    public static void Main() 
    { 
     EventsClass.someDelegateEvent += func; 
     EventsClass.Raise(); 

    } 


    public static void func(int number){ 
     Console.WriteLine(number); 
    } 

} 

public static class EventsClass 
{ 
    public delegate void someDelegate(int num); 

    public static event someDelegate someDelegateEvent; 

    public static void Raise() 
    { 
     if (someDelegateEvent != null) 
     someDelegateEvent(6); 
    } 
} 
+0

Merci pour votre aide! Je l'ai fonctionné. J'ai édité mon post pour le montrer fonctionnant correctement maintenant. Je ne peux pas répondre au mien pendant 2 jours. – alykins

Questions connexes