• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

C#中声明、调用和配置事件的示范代码

OC/C/C++ 水墨上仙 2741次浏览

本示例演示如何在 C# 中声明、调用和配置事件

代码1

// events1.cs
using System;
namespace MyCollections 
{
   using System.Collections;
   // 用于对更改通知进行挂钩的委托类型。
   public delegate void ChangedEventHandler(object sender, EventArgs e);
   // 一个类,其作用与 ArrayList 类似,
   // 但在每次列表更改时发送通知。
   public class ListWithChangedEvent: ArrayList 
   {
      // 一个事件,每当列表元素更改时,客户端可利用该事件
      // 获得通知。
      public event ChangedEventHandler Changed;
      // 调用 Changed 事件;每当列表更改时调用
      protected virtual void OnChanged(EventArgs e) 
      {
         if (Changed != null)
            Changed(this, e);
      }
      // 重写可更改列表的某些方法;
      // 在每个重写后调用事件
      public override int Add(object value) 
      {
         int i = base.Add(value);
         OnChanged(EventArgs.Empty);
         return i;
      }
      public override void Clear() 
      {
         base.Clear();
         OnChanged(EventArgs.Empty);
      }
      public override object this[int index] 
      {
         set 
         {
            base[index] = value;
            OnChanged(EventArgs.Empty);
         }
      }
   }
}
namespace TestEvents 
{
   using MyCollections;
   class EventListener 
   {
      private ListWithChangedEvent List;
      public EventListener(ListWithChangedEvent list) 
      {
         List = list;
         // 将“ListChanged”添加到“List”中的 Changed 事件。
         List.Changed += new ChangedEventHandler(ListChanged);
      }
      // 每当列表更改时就会进行以下调用。
      private void ListChanged(object sender, EventArgs e) 
      {
         Console.WriteLine("This is called when the event fires.");
      }
      public void Detach() 
      {
         // 分离事件并删除列表
         List.Changed -= new ChangedEventHandler(ListChanged);
         List = null;
      }
   }
   class Test 
   {
      // 测试 ListWithChangedEvent 类。
      public static void Main() 
      {
      // 创建新列表。
      ListWithChangedEvent list = new ListWithChangedEvent();
      // 创建一个类,用于侦听列表的更改事件。
      EventListener listener = new EventListener(list);
      // 在列表中添加和移除项。
      list.Add("item 1");
      list.Clear();
      listener.Detach();
      }
   }
}

代码片段2

// events2.cs
using System;
namespace MyCollections 
{
   using System.Collections;
   // 一个类,其作用与 ArrayList 类似,
   // 但在每次列表更改时发送通知:
   public class ListWithChangedEvent: ArrayList 
   {
      // 一个事件,每当列表元素更改时,客户端可利用该事件
      // 获得通知:
      public event EventHandler Changed;
      // 调用 Changed 事件;每当列表更改时调用:
      protected virtual void OnChanged(EventArgs e) 
      {
         if (Changed != null)
            Changed(this,e);
      }
      // 重写可更改列表的某些方法:
      // 在每个重写后调用事件:
      public override int Add(object value) 
      {
         int i = base.Add(value);
         OnChanged(EventArgs.Empty);
         return i;
      }
      public override void Clear() 
      {
         base.Clear();
         OnChanged(EventArgs.Empty);
      }
      public override object this[int index] 
      {
         set 
         {
            base[index] = value;
            OnChanged(EventArgs.Empty);
         }
      }
   }
}
namespace TestEvents 
{
   using MyCollections;
   class EventListener 
   {
      private ListWithChangedEvent List;
      public EventListener(ListWithChangedEvent list) 
      {
         List = list;
         // 将“ListChanged”添加到“List”中的 Changed 事件:
         List.Changed += new EventHandler(ListChanged);
      }
      // 每当列表更改时就会进行以下调用:
      private void ListChanged(object sender, EventArgs e) 
      {
         Console.WriteLine("This is called when the event fires.");
      }
      public void Detach() 
      {
         // 分离事件并删除列表:
         List.Changed -= new EventHandler(ListChanged);
         List = null;
      }
   }
   class Test 
   {
      // 测试 ListWithChangedEvent 类:
      public static void Main() 
      {
      // 创建新列表:
      ListWithChangedEvent list = new ListWithChangedEvent();
      // 创建一个类,用于侦听列表的更改事件:
      EventListener listener = new EventListener(list);
      // 在列表中添加和移除项。
      list.Add("item 1");
      list.Clear();
      listener.Detach();
      }
   }
}


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明C#中声明、调用和配置事件的示范代码
喜欢 (0)
加载中……