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

所属分类: 软件编程 / C#教程 阅读数: 50
收藏 0 赞 0 分享

本文实例为大家分享了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;
      }
     }
    }
   }
  }
 }

}

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

更多精彩内容其他人还在看

C#使用oledb读取excel表格内容到datatable的方法

这篇文章主要介绍了C#使用oledb读取excel表格内容到datatable的方法,涉及C#操作oledb及datatable的相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#使用oledb操作excel文件的方法

这篇文章主要介绍了C#使用oledb操作excel文件的方法,涉及C#中oledb操作excel的相关技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#使用IHttpModule接口修改http输出的方法

这篇文章主要介绍了C#使用IHttpModule接口修改http输出的方法,涉及C#操作IHttpModule接口的相关技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#给图片加水印的简单实现方法

这篇文章主要介绍了C#给图片加水印的简单实现方法,涉及C#操作图片的相关技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#生成随机数的方法小结

这篇文章主要介绍了C#生成随机数的方法,实例总结了C#生成随机数的相关技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#使用jQuery实现无刷新评论提交的方法

这篇文章主要介绍了C#使用jQuery实现无刷新评论提交的方法,涉及C#结合jQuery进行Ajax操作的相关技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#读取中文文件出现乱码的解决方法

这篇文章主要介绍了C#读取中文文件出现乱码的解决方法,涉及C#中文编码的操作技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#图像对比度调整的方法

这篇文章主要介绍了C#图像对比度调整的方法,涉及C#实现图像对比度操作的相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#图像灰度级拉伸的方法

这篇文章主要介绍了C#图像灰度级拉伸的方法,涉及C#灰度操作的相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#图像线性变换的方法

这篇文章主要介绍了C#图像线性变换的方法,涉及C#操作图像线性变换的相关技巧,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多