Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Objasnjenje mehanizama on"ime dogadjaja" metoda (na primer onKeyUp metoda) u C#

[es] :: .NET :: .NET Desktop razvoj :: Objasnjenje mehanizama on"ime dogadjaja" metoda (na primer onKeyUp metoda) u C#

[ Pregleda: 3123 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

JedanDvaTri
student

Član broj: 222386
Poruke: 21
79.101.74.*



Profil

icon Objasnjenje mehanizama on"ime dogadjaja" metoda (na primer onKeyUp metoda) u C#12.05.2009. u 22:29 - pre 153 meseci
Kao sto naslov kaze ... zanima me mehanizam (iliti na srpskom "sta se desava") kod metoda on"ime dogadjaja" :).
Ne razumem upotrebnu vrednost tih metoda , niti razumem na koji nacin rade.

Isto tako ne razumem zasto postoje...kada imamo event delegate na koje "prikacimo" handler metodu koja ce da odreaguje na dogadjaj.

Da li bi neko bio zlatan i probao da mi objasni razlike izmedju on"ime dogadjaja" metoda ( koje override-ujemo u nasoj windows form aplikaciji) i handler metoda ??? Na primer radi onKeyUp metoda....?

p.s Primer bi bio sjajan....
 
Odgovor na temu

Igor Gajic

Član broj: 93194
Poruke: 747
93.86.85.*



+987 Profil

icon Re: Objasnjenje mehanizama on"ime dogadjaja" metoda (na primer onKeyUp metoda) u C#12.05.2009. u 22:45 - pre 153 meseci
http://msdn.microsoft.com/en-us/library/wkzf914z.aspx
 
Odgovor na temu

JedanDvaTri
student

Član broj: 222386
Poruke: 21
79.101.74.*



Profil

icon Re: Objasnjenje mehanizama on"ime dogadjaja" metoda (na primer onKeyUp metoda) u C#12.05.2009. u 23:24 - pre 153 meseci
Ehm, vec sam i ja sam googlao... i nasao razne linkove , ukljucujuci i taj.... i jos uvek mi nije jasno...nazalost
 
Odgovor na temu

DarkMan
Darko Matesic

Član broj: 20445
Poruke: 572
93.86.191.*

Jabber: DarkMan


Profil

icon Re: Objasnjenje mehanizama on"ime dogadjaja" metoda (na primer onKeyUp metoda) u C#13.05.2009. u 14:33 - pre 153 meseci
Evo ti jedan primer kako se implementira neki property sa eventom koji se aktivira kada se taj property promeni:
Code:

    public class MyClass
    {
        private int m_MyValue = 0;

        public virtual int MyValue
        {
            get { return m_MyValue; }
            set
            {
                if(m_MyValue != value) {
                    m_MyValue = value;
                    OnMyValueChanged(EventArgs.Empty);
                }
            }
        }

        public event EventHandler MyValueChanged = null;

        protected virtual void OnMyValueChanged(EventArgs e)
        {
            if(this.MyValueChanged != null) {
                this.MyValueChanged(this, e);
            }
        }
    }


OnMyValueChanged je metoda koja ce aktivirati event MyValueChanged.
U toj metodi imas proveru "this.MyValueChanged != null" kojom se proverava da li ima registrovanih (nakacenih) handlera za taj event, a jednim pozivom ovog eventa se pozivaju svi handleri koji su registrovani i to onim redom kojim su se registrovali.

Kada koristis neku instancu doticne klase tebi je dostupan samo taj handler kojim mozes pratiti da li se vrednost property-a promenila.
Code:

    public class Test
    {
        public Test()
        {
            MyClass myClass = new MyClass();
            myClass.MyValueChanged += new EventHandler(myClass_MyValueChanged);
        }

        void myClass_MyValueChanged(object sender, EventArgs e)
        {
            MessageBox.Show("MyValue changed");
        }
    }


Ako nasledis klasu taj event i dalje mozes da nadgledas tako sto ces registrovati event (nakaciti se na event):
Code:

    public class MyClassEx: MyClass
    {
        public MyClassEx()
        {
            this.MyValueChanged += new EventHandler(MyClassEx_MyValueChanged);
        }

        public void MyClassEx_MyValueChanged(object sender, EventArgs e)
        {
            MessageBox.Show("MyValue changed");
        }
    }

Medjutim ti mozes pratiti event i tako sto ces override-ovati metodu OnMyValueChanged:
Code:

    public class MyClassEx2: MyClass
    {
        protected override void OnMyValueChanged(EventArgs e)
        {
            MessageBox.Show("MyValue changed");
            base.OnMyValueChanged(e);
        }
    }


Ako odradis override OnMyValueChanged i u tom override-u ne pozoves metodu OnMyValueChanged iz bazne klase sprecices podizanje doticnog eventa.
Mozes odraditi i override property-a MyValue i izmeniti ga tako da se ovaj event nikada ni ne poziva.
 
Odgovor na temu

JedanDvaTri
student

Član broj: 222386
Poruke: 21
93.86.97.*



Profil

icon Re: Objasnjenje mehanizama on"ime dogadjaja" metoda (na primer onKeyUp metoda) u C#13.05.2009. u 19:41 - pre 153 meseci
@ Darko
Hvala na odgovoru !!! Tako nesto sam trazio! Sad mi je potpuno jasno :) .
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Objasnjenje mehanizama on"ime dogadjaja" metoda (na primer onKeyUp metoda) u C#

[ Pregleda: 3123 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.