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

发布时间 - 2026-01-11 02:19:14    点击率:

本文实例为大家分享了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#  # 事件  # 属性  # C#自定义事件模拟风吹草摇摆效果  # 在C#使用字典存储事件示例及实现自定义事件访问器  # C#自定义事件监听实现方法  # C#自定义事件及用法实例  # C#中自定义事件和委托实例  # asp.net中c#自定义事件的实现方法详解  # c#在程序中定义和使用自定义事件方法总结  # 大家分享  # 具体内容  # 大家多多  # Main  # string  # args  # Program  # static  # void  # Monitor  # Year  # PropertyChanging  # EventHandler  # m_PropertyChanging  # class  # brush  # csharp  # bool  # null  # pre 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  大连网站制作公司哪家好一点,大连买房网站哪个好?  如何在景安服务器上快速搭建个人网站?  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  如何在橙子建站中快速调整背景颜色?  Python并发异常传播_错误处理解析【教程】  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Python高阶函数应用_函数作为参数说明【指导】  Python函数文档自动校验_规范解析【教程】  html5audio标签播放结束怎么触发事件_onended回调方法【教程】  如何在IIS中配置站点IP、端口及主机头?  中山网站推广排名,中山信息港登录入口?  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  香港服务器如何优化才能显著提升网站加载速度?  Windows Hello人脸识别突然无法使用  高防服务器如何保障网站安全无虞?  Laravel如何使用Blade组件和插槽?(Component代码示例)  EditPlus中的正则表达式 实战(4)  网站制作大概多少钱一个,做一个平台网站大概多少钱?  如何在云虚拟主机上快速搭建个人网站?  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  高端智能建站公司优选:品牌定制与SEO优化一站式服务  如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体  如何在万网自助建站平台快速创建网站?  如何用y主机助手快速搭建网站?  高端建站如何打造兼具美学与转化的品牌官网?  详解Oracle修改字段类型方法总结  php json中文编码为null的解决办法  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何登录建站主机?访问步骤全解析  如何在Windows环境下新建FTP站点并设置权限?  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  怎样使用JSON进行数据交换_它有什么限制  简历没回改:利用AI润色让你的文字更专业  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  如何快速生成可下载的建站源码工具?  如何在万网主机上快速搭建网站?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何快速生成高效建站系统源代码?  Java解压缩zip - 解压缩多个文件或文件夹实例  香港服务器建站指南:免备案优势与SEO优化技巧全解析  网站页面设计需要考虑到这些问题  C#如何调用原生C++ COM对象详解  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  PHP正则匹配日期和时间(时间戳转换)的实例代码