Thursday, May 22, 2014

How to create events?

namespace MyFormNamespace
{
    public partial class MyForm : Form
    {
        public MyForm()
        {
            MyEventArg  e = new MyEventArg ();
            e.Number = 1;
            e.Message = "hello!";
            OnMyEventReceived(e);  //activate the event!
        }

        public event EventHandler<MyEventArg > MyEvent;

        protected void OnMyEventReceived(MyEventArg e)
        {
            if (this.InvokeRequired)
            {
                MethodInvoker invoker = () => OnMyEventReceived(e);
                this.Invoke(invoker);
            }
            else
            {
                EventHandler<MyEventArg> handler = MyEvent;
                if (handler != null)
                {
                    handler(this, e);
                }
            }
        }
       
        public class MyEventArg : EventArgs
        {
            public int Number;
            public string Message;
        }
    }

//########## Another program ##########

using MyForm;

namespace MyForm2Namespace
{
    public partial class MyForm2 : Form
    {
        public MyForm2()
        {
              MyForm firstForm = new MyForm();
              firstForm.MyEvent += myCallbackMethod; //register for the event
        }

        //myCallbackMethod() will be called when the event is activated in the first form
        private void myCallbackMethod(object sender, MyEventArg e)
        {
            richTextBox1.Text += e.Number.ToString() + "\n";
            richTextBox1.Text += e.Message + "\n\n";
        }
    }
}

No comments:

Post a Comment