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

摘要:
=值)117{118if(PropertyChanging!
  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 
  6 namespace ConsoleApplication15
  7 {
  8     class Program
  9     {
 10         static void Main(string[] args)
 11         {
 12             Monitor m = new Monitor();
 13             m.PropertyChanging += new Monitor.EventHandler(m_PropertyChanging);
 14             m.Year = 2014;
 15             m.Year = 1890;
 16             m.Year = 2013;
 17 
 18         }
 19 
 20         static bool First=false;
 21         static void m_PropertyChanging(object sender, PropertyChangingEventArgs e)
 22         {
 23             if (First==false)
 24             {
 25                 First = true;
 26             }
 27             else
 28             {
 29                 if (e.NewValue < 1900 || e.NewValue > 3000)
 30                 e.Cancel = true;
 31             }
 32         }
 33     }
 34 
 35     //(属性正在改变的时候)事件数据
 36     class PropertyChangingEventArgs : EventArgs
 37     {
 38         //构造函数
 39         public PropertyChangingEventArgs(string PropertyName, int OldValue, int NewValue)
 40         {
 41             _PropertyName = PropertyName;
 42             _OldValue = OldValue;
 43             _NewValue = NewValue;
 44         }
 45 
 46         //存储数据
 47         private string _PropertyName;
 48         private int _OldValue;
 49         private int _NewValue;
 50         private bool _Cancel;
 51 
 52         //获取或设置属性
 53         public string PropertyName
 54         {
 55             set
 56             {
 57                 _PropertyName = value;
 58             }
 59             get
 60             {
 61                 return _PropertyName;
 62             }
 63         }
 64         public int OldValue
 65         {
 66             set
 67             {
 68                 _OldValue = value;
 69             }
 70             get
 71             {
 72                 return _OldValue;
 73             }
 74         }
 75         public int NewValue
 76         {
 77             set
 78             {
 79                 _NewValue = value;
 80             }
 81             get
 82             {
 83                 return _NewValue;
 84             }
 85         }
 86         public bool Cancel
 87         {
 88             set
 89             {
 90                 _Cancel = value;
 91             }
 92             get
 93             {
 94                 return _Cancel;
 95             }
 96         }
 97     }
 98 
 99     class Monitor
100     {
101         //定义委托
102         public delegate void EventHandler(object sender, PropertyChangingEventArgs e);
103         //定义事件
104         public event EventHandler PropertyChanging;
105         
106         //事件处理(用属性方法)
107         int _YearValue;
108         public int Year
109         {
110             get
111             {
112                 return _YearValue;
113             }
114             set
115             {
116                 if (_YearValue != value)
117                 {
118                     if (PropertyChanging != null)
119                     {
120                         PropertyChangingEventArgs e = new PropertyChangingEventArgs("Year", _YearValue, value);
121                         PropertyChanging(this, e);
122                         if (e.Cancel)
123                         {
124                             return;
125                         }
126                         else
127                         {
128                             _YearValue = value;
129                         }
130                     }
131                 }
132             }
133         }
134     }
135 
136 }

免责声明:文章转载自《C#自定义事件:属性改变引发事件示例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇typora字体与字体颜色记录一次centost docker 容器 占满磁盘100% 的处理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

EwoMail 开源邮件服务器安装教程

本教程示例中使用的主要域名是ewomail.cn。设置主机名EwoMail将在安装后默认使用带有域名前缀mail的主机名。例如,mail.ewomail。cn将系统主机名更改为mail.ewomail.cn。查看当前主机名hostname-f修改主机名,修改文件/etc/sysconfig/network修改文件/etc/hosts,添加mail.ewoma...

MySQL锁详解

MySQL锁详解update语句执行流程MySQL的锁介绍按照锁的粒度来说,MySQL主要包含三种类型(级别)的锁定机制:全局锁:锁的是整个database。由MySQL的SQLlayer层实现的表级锁:锁的是某个table。由MySQL的SQLlayer层实现的行级锁:锁的是某行数据,也可能锁定行之间的间隙。...

Debian忘记密码重置

我使用的系统是Debian8,但这种方法也适用于Debian7以上的系统。具体步骤是重新启动VPS。您可以使用“CTRL+ALT+DEL”按钮直接在面板或VNC上重新启动VPS,然后按图中的“e”按钮;在BIOS界面上,按“e”进入GRUB引导菜单,然后按“e”进入编辑;输入GRUB编辑红色框中的内容,并将“ro”替换为“rwinit=/bin/sh”;修改...

数据可视化之powerBI技巧(十四)采悟:PowerBI中自制中文单位万和亿

最令人不快的事情之一是数据单元的设置。现在让我们看看如何通过设置测量值来切换单位。需要动态选择1万元和1亿元的单位进行显示。首先,手动创建单位表,然后使用单位表中的[unit]字段生成切片器。下一步是建立销售衡量标准。销售额=总和('订单'[销售额])为了按过滤单位显示销售额,SELECTEDVALUE函数可以根据切片器选择动态更改分母。如果切片器未进行任何...

Linux cat查看文件,查找关键字(grep),统计(wc -l)

######cat搜索关键字的语法:cat file | grep keyword | wc lcat/proc/meminfo | grepSwap | wc-l#######Linux系统中wc命令的功能是统计指定文件中的字节、单词和行数,并显示和输出统计结果。如果没有给出文件名,则从标准输入中读取。wc还提供指定文件的总统计数。此标志不能与-c标志一起...

CentOS7上使用history删除部分历史记录

使用history命令删除登录后创建的历史记录,但保留原始记录。如果未执行history命令,则直接使用history-r命令将文件中的历史刷新到此处的缓存中,并且不会保存以前操作的记录。修改后,执行:history-c以清除当前会话历史中的历史缓存-r以读取~/。bash_您可以看到历史文件中的历史记录已在缓存中更新。...