Raise Events

public class Time
    {
        //Denne klassen kan du test som følger fra et annet sted..
        //private void simpleButton2_Click(object sender, EventArgs e)
        //{

        //    Time t = new Time();
        //    t.TimeHasChanged += t_TimeHasChanged;
        //    t.ChangeTime();
        //}

        //void t_TimeHasChanged(object sender, TimeHasChangedEventArgs e)
        //{
        //    MessageBox.Show(e.SomeProperty);
        //}


   
        //Delegaten
        public delegate void TimeHasChangedEventHandler(object sender, TimeHasChangedEventArgs e);

        //Eventet
        public event TimeHasChangedEventHandler TimeHasChanged;

        // Metoden man benytter for å raise eventet
        protected virtual void OnTimeHasChanged(TimeHasChangedEventArgs e)
        {
            if (TimeHasChanged!=null)
            {
                //Invoke delegates
                TimeHasChanged(this, e);
            }
        }

        //En testmetode for å kunne raise eventet.
        //Vanligvis vil man raise eventet på de stedene man måtte ønske
        public void ChangeTime()
        {
            this.OnTimeHasChanged(new TimeHasChangedEventArgs() { SomeProperty = "Dette er en test" });
        }

    }

    //EventArgs klassen. Denne vil du normalt utstyre med de properties som du har behov for.
    //Dersom du ikke har behov for å sende spesielle data rundt omkring så kan du bruke EventArgs direkte
    //og ikke gå via en egen klasse som arver EventArgs
    public class TimeHasChangedEventArgs : EventArgs
    {
        public string SomeProperty { get; set; }
    }

Advertisement
This entry was posted in C#. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s