C# .net Csharp 委托及事件处理机制

//EventHandlerClass.cs  
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Self_DefinedEvent
{
    public class EventHandlerClass
    {
        //定义接收消息的公共属性
        public string receivedMessage;
        //自定义事件的处理方法
        public void ReceiveAndDisplayMessage(string message)
        {
            receivedMessage = "i= " + message+" ";
        }
    }
}
 

//EventSenderClass.cs  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Self_DefinedEvent
{
    //声明一个委托类(定义为公共类型,以便外部代码使用)
    public delegate void MyEventDelegate(string aMessage);//参数为提示信息
    class EventSenderClass
    {
        //定义一个事件属性
        public event MyEventDelegate selfEvent;
        //定义一个激发自定义事件的方法
        public int i = 0;
        public void RaiseSelfDefinedEvent()
        {
            //事件是否被订阅(被实例化),如果未订阅,MessageArrived就是null,不会引发事件
            if (selfEvent != null)
                selfEvent((i++).ToString());
        }
    }
}

//Self_DefinedEvent.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using HandleEvent.cs;

namespace Self_DefinedEvent
{
    public partial class Form1 : Form
    {
        EventSenderClass myEventSender;
        EventHandlerClass myEventHandler;

        public Form1()
        {
            InitializeComponent();
            myEventSender = new EventSenderClass();
            myEventHandler = new EventHandlerClass();
            //订阅(实例化)自定义事件           
            myEventSender.selfEvent += new MyEventDelegate(myEventHandler.ReceiveAndDisplayMessage);
        }
        //按钮点击处理方法
        private void button1_Click_1(object sender, EventArgs e)
        {
            //触发自定义事件
            myEventSender.RaiseSelfDefinedEvent();
            label1.Text = label1.Text + myEventHandler.receivedMessage;
        }
    }
}

你可能感兴趣的:(C# .net Csharp 委托及事件处理机制)