Event in einer anderen Klasse aufrufen



  • Hallo Leute,
    ist es möglich, ein Event aus einer anderen Klasse aufzurufen, also so in der Art:

    public Class A
    {
      public event EventHandler evt;
    }
    
    public Class B
    {
      private A a;
      public B()
      {
        B.evt();
      }
    }
    

    Dieser Code funktioniert so nicht. Mir würde es auch reichen, ein Event aus einer Subklasse aufzurufen, d.h. im obigen Beispiel wäre B eine Subklasse von A (Und es würde keine Instanz a geben, das Event würde also direkt aufgerufen werden).

    Danke im voraus.



  • events weren nicht mit vererbt, dazu brauchst du eine funktion in der basisklasse die mit dem event etwas anfängt, welche du in der abgeleiteten klasse aufrufst

    [Edit]
    vielleicht meinst du sowas?

    namespace ConsoleApplication1
    {
        public delegate void Eventh();
        class Baseclass
        {
            public event Eventh evt;
            public void OnEvent()
            {
                evt();
            }
        }
    
        class Subclass
        {
            public Baseclass b = new Baseclass();
            public void DoSomething()
            {
                b.evt += Test;
                b.OnEvent();
            }
    
            public void Test()
            {
                Console.WriteLine("TEST");
            }
        }
    }
    

    Anwendung

    class Program
        {
            static void Main(string[] args)
            {
                Subclass s = new Subclass();
                s.DoSomething();
                Console.ReadLine();
            }
        }
    


  • Daran hab ich auch schon gedacht, das Problem ist nur, dass ich auf die Basisklasse keinen Zugriff habe (PropertyGrid). Konnte das Problem allerdings inzwischen anders lösen, trotzdem danke.


Anmelden zum Antworten