Wie richtige Eventhandler??



  • Hallo,

    ich habe nach einem Buch, einene EVnthanlder geschrieben:

    MYClass.cs

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace eventhandler
    {
        public delegate void EventHandler(MyClass m);
        class MyClass
        {
            int var = 0;
    
            public event EventHandler Events;
            public void SetVar(int i)
            {
                if (i > 0)
                    var = i;
                else
                {
                    Events(this);
                }
    
            }
        }
    }
    

    testclass.cs

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace eventhandler
    {
        class testclass
        {
            MyClass myC = new MyClass();
            public void Func()
            {
                myC = new MyClass();
                myC.Events += new EventHandler(testfunc(myC));
                myC.SetVar(-10);
            }
    
            private void testfunc(MyClass m)
            {
                Console.WriteLine("JA");
            }
    
        }
    
    }
    

    Programm.cs

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace eventhandler
    {
        class Program
        {
            static void Main(string[] args)
            {
                testclass t = new testclass();
                t.Func();
                Console.ReadLine();
            }
        }
    }
    

    bekomme immer: "Methodenname erwartet"

    was mache ich falsch??



  • asdsa schrieb:

    bekomme immer: "Methodenname erwartet"

    Ach, schön. Und wo?

    Ich denke mal er will dass Du beim Konstruieren des Handlers (new EventHandler) die Methode nur angibst und nicht aufrufst. Den Parameter übergibst Du erst beim Aufruf via Events(this).

    public void Func()
    {
        myC = new MyClass();
        myC.Events += new EventHandler(testfunc);
        myC.SetVar(-10);
    }
    

Anmelden zum Antworten