您的位置:首页 > 编程语言 > C#

C# 委托事件(自定义委托事件与标准委托事件)

2017-06-14 00:00 465 查看
理解:事件可以理解为某个对象发出消息,通知待定对象的行为或状态改变。触发事件的对象叫发出者(sender) 和捕获和响应事件的对象叫(receiver)接收者 。实事上接收者就是事件告知委托要执行的对象或类的行为。发出者一般都会触发某个方法去抛出事件,执行委托。

class Program
{
static void Main(string[] args)
{
#region 自定义委托事件

SenderClass sender = new SenderClass();
ReceiveClass receiveer = new ReceiveClass();
//注册事件(实例化事件)
sender.TestEventArgs += new SenderClass.TestEventHandler(receiveer.ReceiveMessage);
//调用方法,触发事件
string str = sender.SenderMessage("Hello World!");

Console.WriteLine(str);

#endregion

#region 标准委托事件

StardandSender send = new StardandSender();
StardandReceive recieve = new StardandReceive();
//注册事件
send.Send += new StardandSender.SenderEventHandler(recieve.ReceiveMsg);
//触发事件
send.TriggerSend("轻轻的我走了,正如我轻轻的来!");
#endregion

Console.ReadKey();
}
}

#region 自定义事件
//发送方
public class SenderClass
{
//定义委托
public delegate string TestEventHandler(string message);
//定义委托事件
public event TestEventHandler TestEventArgs;
//定义一个事件触发的方法,当方法被调用,事件被触发
public string SenderMessage(string messageStr)
{
if (TestEventArgs != null)
{
//事件注册后,抛出事件,执行委托方法(这里通过事件传参数来调用委托)
return TestEventArgs(messageStr);
}
return string.Empty;
}
}
//接收方
public class ReceiveClass
{
//接收消息参数
//receiveMsg;
//定义一个委托执行方法
public string ReceiveMessage(string receiveMsg)
{
return receiveMsg;
//Console.WriteLine(receiveMsg);
}
}

#endregion

#region 标准委托事件

//发送方
public class StardandSender
{
//定义委托
public delegate void SenderEventHandler(Object sender, SendMsgEventArgs e);
//定义事件
public event SenderEventHandler Send;
//事件触发的方法
public void TriggerSend(string msg)
{
if (Send != null)
{
//实例化事件
SendMsgEventArgs sendEvent = new SendMsgEventArgs(msg);
//抛出事件,执行委托
Send(this, sendEvent);
}
}

}

//继承微软基类事件
public class SendMsgEventArgs : EventArgs
{
//发送信息
public string message;
public SendMsgEventArgs(string sendMessage)
{
message = sendMessage;
}
}

//接收方
public class StardandReceive
{
//e.message 接收消息
public void ReceiveMsg(Object sender, SendMsgEventArgs e)
{
Console.WriteLine(e.message);
}
}

#endregion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# 委托事件