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
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#委托、自定义、事件
- c#中事件Event声明和触发,以及自定义事件委托和系统委托EventHandler
- 对C#委托、事件、自定义事件的理解
- C# 自定义参数的 事件委托
- 用C++实现C#中的委托/事件(标准C++之升级版)
- 标准的事件和委托声明写法(C#)
- 浅析C#的事件处理和自定义事件
- C#中的组件-事件-委托
- C#中委托,事件理解入门
- 使用委托在用户自定义控件中实现事件响应
- 我对C#中事件委托的通俗看法
- C#的事件处理与委托
- 浅析C#的事件处理和自定义事件
- C#中,对委托和事件的理解
- C#中的委托与事件
- C#委托及事件
- C# 事件 委托 教程
- 用 C++ 实现 C# 中的 委托/事件 (2-delegate event functor)
- C#里的委托和事件实现Observer
- 深入理解C#编程中的组件-事件-委托