我是靠谱客的博主 酷酷衬衫,最近开发中收集的这篇文章主要介绍侦听列表(ArrayList)的更改,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

none.gif using  System;
none.gif
namespace  MyCollections 
expandedblockstart.gifcontractedblock.gif
dot.gif {
inblock.gif   
using System.Collections;
inblock.gif
inblock.gif   
// 用于对更改通知进行挂钩的委托类型。
inblock.gif
    public delegate void ChangedEventHandler(object sender, EventArgs e); // 此处可以不使用ChangedEventHandler,而使用系统定义的委托EventHandler
inblock.gif
inblock.gif   
// 一个类,其作用与 ArrayList 相似,
inblock.gif   
// 但在每次列表更改时发送通知。
inblock.gif
   public class ListWithChangedEvent: ArrayList 
expandedsubblockstart.gifcontractedsubblock.gif   
dot.gif{
inblock.gif      
// 一个事件,每当列表元素更改时,客户端可利用该事件
inblock.gif      
// 获得通知。
inblock.gif
      public event ChangedEventHandler Changed;
inblock.gif
inblock.gif      
// 调用 Changed 事件;每当列表更改时调用
inblock.gif
      protected virtual void OnChanged(EventArgs e) 
expandedsubblockstart.gifcontractedsubblock.gif      
dot.gif{
inblock.gif         
if (Changed != null)
inblock.gif            Changed(
this, e);
expandedsubblockend.gif      }

inblock.gif
inblock.gif      
// 重写可更改列表的某些方法;
inblock.gif      
// 在每个重写后调用事件
inblock.gif
      public override int Add(object value) 
expandedsubblockstart.gifcontractedsubblock.gif      
dot.gif{
inblock.gif         
int i = base.Add(value);
inblock.gif         OnChanged(EventArgs.Empty);
inblock.gif         
return i;
expandedsubblockend.gif      }

inblock.gif
inblock.gif      
public override void Clear() 
expandedsubblockstart.gifcontractedsubblock.gif      
dot.gif{
inblock.gif         
base.Clear();
inblock.gif         OnChanged(EventArgs.Empty);
expandedsubblockend.gif      }

inblock.gif
inblock.gif      
public override object this[int index] 
expandedsubblockstart.gifcontractedsubblock.gif      
dot.gif{
inblock.gif         
set 
expandedsubblockstart.gifcontractedsubblock.gif         
dot.gif{
inblock.gif            
base[index] = value;
inblock.gif            OnChanged(EventArgs.Empty);
expandedsubblockend.gif         }

expandedsubblockend.gif      }

expandedsubblockend.gif   }

expandedblockend.gif}

none.gif
none.gif
namespace  TestEvents 
expandedblockstart.gifcontractedblock.gif
dot.gif {
inblock.gif   
using MyCollections;
inblock.gif
inblock.gif   
class EventListener 
expandedsubblockstart.gifcontractedsubblock.gif   
dot.gif{
inblock.gif      
private ListWithChangedEvent List;
inblock.gif
inblock.gif      
public EventListener(ListWithChangedEvent list) 
expandedsubblockstart.gifcontractedsubblock.gif      
dot.gif{
inblock.gif         List 
= list;
inblock.gif         
// 将“ListChanged”添加到“List”中的 Changed 事件。
inblock.gif
         List.Changed += new ChangedEventHandler(ListChanged);
expandedsubblockend.gif      }

inblock.gif
inblock.gif      
// 每当列表更改时就会进行以下调用。
inblock.gif
      private void ListChanged(object sender, EventArgs e) 
expandedsubblockstart.gifcontractedsubblock.gif      
dot.gif{
inblock.gif         Console.WriteLine(
"This is called when the event fires.");
expandedsubblockend.gif      }

inblock.gif
inblock.gif      
public void Detach() 
expandedsubblockstart.gifcontractedsubblock.gif      
dot.gif{
inblock.gif         
// 分离事件并删除列表
inblock.gif
         List.Changed -= new ChangedEventHandler(ListChanged);
inblock.gif         List 
= null;
expandedsubblockend.gif      }

expandedsubblockend.gif   }

inblock.gif
inblock.gif   
class Test 
expandedsubblockstart.gifcontractedsubblock.gif   
dot.gif{
inblock.gif      
// 测试 ListWithChangedEvent 类。
inblock.gif
      public static void Main() 
expandedsubblockstart.gifcontractedsubblock.gif      
dot.gif{
inblock.gif      
// 创建新列表。
inblock.gif
      ListWithChangedEvent list = new ListWithChangedEvent();
inblock.gif
inblock.gif      
// 创建一个类,用于侦听列表的更改事件。
inblock.gif
      EventListener listener = new EventListener(list);
inblock.gif
inblock.gif      
// 在列表中添加和移除项。
inblock.gif
      list.Add("item 1");
inblock.gif      list.Clear();
inblock.gif      listener.Detach();
expandedsubblockend.gif      }

expandedsubblockend.gif   }

expandedblockend.gif}

none.gif

毛毛的小窝

转载于:https://www.cnblogs.com/mjgforever/archive/2007/05/17/749811.html

最后

以上就是酷酷衬衫为你收集整理的侦听列表(ArrayList)的更改的全部内容,希望文章能够帮你解决侦听列表(ArrayList)的更改所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部