好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#自定义事件之属性改变引发事件示例

本文实例为大家分享了C#属性改变引发事件示例的具体代码,供大家参考,具体内容如下

?

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

 

namespace ConsoleApplication15

{

  class Program

  {

   static void Main( string [] args)

   {

    Monitor m = new Monitor();

    m.PropertyChanging += new Monitor.EventHandler(m_PropertyChanging);

    m.Year = 2014;

    m.Year = 1890;

    m.Year = 2013;

 

   }

 

   static bool First= false ;

   static void m_PropertyChanging( object sender, PropertyChangingEventArgs e)

   {

    if (First== false )

    {

     First = true ;

    }

    else

    {

     if (e.NewValue < 1900 || e.NewValue > 3000)

     e.Cancel = true ;

    }

   }

  }

 

  //(属性正在改变的时候)事件数据

  class PropertyChangingEventArgs : EventArgs

  {

   //构造函数

   public PropertyChangingEventArgs( string PropertyName, int OldValue, int NewValue)

   {

    _PropertyName = PropertyName;

    _OldValue = OldValue;

    _NewValue = NewValue;

   }

 

   //存储数据

   private string _PropertyName;

   private int _OldValue;

   private int _NewValue;

   private bool _Cancel;

 

   //获取或设置属性

   public string PropertyName

   {

    set

    {

     _PropertyName = value;

    }

    get

    {

     return _PropertyName;

    }

   }

   public int OldValue

   {

    set

    {

     _OldValue = value;

    }

    get

    {

     return _OldValue;

    }

   }

   public int NewValue

   {

    set

    {

     _NewValue = value;

    }

    get

    {

     return _NewValue;

    }

   }

   public bool Cancel

   {

    set

    {

     _Cancel = value;

    }

    get

    {

     return _Cancel;

    }

   }

  }

 

  class Monitor

  {

   //定义委托

   public delegate void EventHandler( object sender, PropertyChangingEventArgs e);

   //定义事件

   public event EventHandler PropertyChanging;

  

   //事件处理(用属性方法)

   int _YearValue;

   public int Year

   {

    get

    {

     return _YearValue;

    }

    set

    {

     if (_YearValue != value)

     {

      if (PropertyChanging != null )

      {

       PropertyChangingEventArgs e = new PropertyChangingEventArgs( "Year" , _YearValue, value);

       PropertyChanging( this , e);

       if (e.Cancel)

       {

        return ;

       }

       else

       {

        _YearValue = value;

       }

      }

     }

    }

   }

  }

 

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于C#自定义事件之属性改变引发事件示例的详细内容...

  阅读:49次