• C# 2.0学习之事件1


    //Copyright (C) Microsoft Corporation.  All rights reserved.

    // events1.cs
    using System;
    namespace MyCollections
    {
       using System.Collections;

       // A delegate type for hooking up change notifications.
       public delegate void ChangedEventHandler(object sender, EventArgs e);

       // A class that works just like ArrayList, but sends event
       // notifications whenever the list changes.
       public class ListWithChangedEvent: ArrayList
       {
          // An event that clients can use to be notified whenever the
          // elements of the list change.
          public event ChangedEventHandler Changed;

          // Invoke the Changed event; called whenever list changes
          protected virtual void OnChanged(EventArgs e)
          {
             if (Changed != null)
                Changed(this, e);
          }

          // Override some of the methods that can change the list;
          // invoke event after each
          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;
             // Add "ListChanged" to the Changed event on "List".
             List.Changed += new ChangedEventHandler(ListChanged);
          }

          // This will be called whenever the list changes.
          private void ListChanged(object sender, EventArgs e)
          {
             Console.WriteLine("This is called when the event fires.");
          }

          public void Detach()
          {
             // Detach the event and delete the list
             List.Changed -= new ChangedEventHandler(ListChanged);
             List = null;
          }
       }

       class Test
       {
          // Test the ListWithChangedEvent class.
          public static void Main()
          {
          // Create a new list.
          ListWithChangedEvent list = new ListWithChangedEvent();

          // Create a class that listens to the list's change event.
          EventListener listener = new EventListener(list);

          // Add and remove items from the list.
          list.Add("item 1");
          list.Clear();
          listener.Detach();
          }
       }
    }


    csc events1.cs
    events1
     
  • 相关阅读:
    第二十章 用户管理(一)
    第十九章 Linux中常用字符的特殊含义
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
  • 原文地址:https://www.cnblogs.com/llbofchina/p/434183.html
Copyright © 2020-2023  润新知