c.sharp自定义事件

using System;

namespace testEventApp
{
 public delegate void Class2_Event_Handler(object sender, string strEventArg);

 /// <summary>
 /// Class1 的摘要说明。
 /// </summary>
 class Class1
 {

  public Class1()
  {
   Console.WriteLine ("Class1>>>创建一个Class1对象!");
  }
  /// <summary>
  /// 应用程序的主入口点。
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   //
   // TODO: 在此处添加代码以启动应用程序
   //
   Class1 aClass1 = new Class1 ();
   Class2 aClass2 = new Class2 (); //创建一个Class2对象
   //将事件处理函数与Class2中的事件关联
   aClass2.Class2_Event += new Class2_Event_Handler(aClass1.On_Class2Event );
   //调用Class2中的方法,等待其触发事件
   aClass2.Class2_Event_Riser ();
  }

  private void On_Class2Event(object sender, string strEventArg)
  { //Class2中事件发生时的处理函数
   Console.WriteLine ("Class1>>>收到Class2中的事件:" +strEventArg);
   if (strEventArg=="exit")
   {
    Class2 senderRef =( Class2)sender;
    //取消事件处理函数与Class2中事件的关联
    senderRef.Class2_Event -= new Class2_Event_Handler (this.On_Class2Event );
    Console.WriteLine ("Class1>>>不再接收Class2的事件!输入exit退出!");
   }
  }
 }


 class Class2
 {
  public Class2()
  {
   Console.WriteLine ("Class2>>>创建一个Class2对象!");
  }
  //利用delegate,定义一个事件
  public event Class2_Event_Handler Class2_Event;
  //一个可以触发事件的方法
  public void Class2_Event_Riser()
  {
   string strRead;
   while(true)
   {
    Console.Write ("Class2>>>");
    strRead = Console.ReadLine ();

    if ( Class2_Event!=null )//当事件处理函数存在时
    {
     Console.WriteLine ("Class2>>>发送事件:"+strRead);
     Class2_Event(this, strRead);//触发delegate中的事件处理函数
    }
    else if (strRead == "exit")
    {
     System.Environment .Exit (-1);    
    }
   }
  }
 }
}
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值