事件初探

 

1.           引言

.net事件对于初学者不是很好理解,以下示例帮助初学着理解事件。

2.      事件

定义事件成员的类型允许类型(或类型示例)在某些事情发生时通知其他对象。事件模型建立在委托之上。

3.      案例

假设我们设计的类型myStudent(具有IDName属性),当它的任意一个属性发生改变时,提供对外通知的功能。

4.      代码实现

a)         myStudent

class myStudent

{

    private string id;

    public string ID

    {

        get

        {

            return id ;

        }

       

        set

        {

            id=value;

            /// 对外通知

            OnPropertyChanged();

        }

    }

   

    private string name;

    public string Name

    {

        get

        {

            return name;

        }

       

        set

        {

            name=value;

        /// 对外事件

 

            OnPropertyChanged();

        }

    }

   

    /// <summary>

    /// 定义一个事件成员,以便所有接受事件通知着订阅

    /// </summary>

    /// <returns></returns>

    public event EventHandler PropertyChanged;

   

    /// <summary>

    /// 使用virtual 是为了便于派生类改变基类的通知行为

    /// </summary>

    public virtual void OnPropertyChanged()

    {

        if(PropertyChanged!=null)

        {

            PropertyChanged(this,new EventArgs ());

        }

    }

   

    public override string ToString()

    {

     return    string.Format ("ID:{0} Name:{1}",ID,Name);

    }

   

}

b)         外部订阅事件片段

public static void RunSnippet()

    {

        myStudent StudentObj=new myStudent();

         /// 外部订阅

        StudentObj.PropertyChanged+=new EventHandler(OnPropertyChanged);

       

        StudentObj.ID ="001";

        StudentObj.Name ="B0b0";

    }

 //订阅处理

public static void OnPropertyChanged(object sender,EventArgs e)

    {

        myStudent obj=(myStudent)sender;

        Console.WriteLine ("Property Changed:{0}",sender.ToString());

    }

5.      运行结果


原文地址:https://www.cnblogs.com/hbb0b0/p/1574663.html