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 = ;
m.Year = ;
m.Year = ; } static bool First=false;
static void m_PropertyChanging(object sender, PropertyChangingEventArgs e)
{
if (First==false)
{
First = true;
}
else
{
if (e.NewValue < || e.NewValue > )
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#自定义事件:属性改变引发事件示例的更多相关文章

  1. HTML 5 全局属性和事件属性

    1.HTML 5 全局属性 HTML 属性能够赋予元素含义和语境. 下面的全局属性可用于任何 HTML5 元素. NEW:HTML 5 中新的全局属性. 属性 描述 accesskey 规定访问元素的 ...

  2. target 事件属性

    定义和用法 target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素.文档或窗口. 语法 event.target 实例 下面的例子可获得触发事件的元素: <html&g ...

  3. 如何给ActiveX控件添加“事件”“属性”“标准事件”“自定义事件”等一些相关操作

    上一篇小编带大家熟悉了一下ActiveX的建立以及相关的概念,(http://blog.csdn.net/u014028070/article/details/38424611) 本文介绍下如何给控件 ...

  4. WPF——数据绑定及属性改变事件

    一.首先需要封装一下文本框的属性,并且在实体类中添加一个实体类的属性改变函数 public class User : INotifyPropertyChanged //INotifyPropertyC ...

  5. html5与js关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的value点击全选状态onclick="select();"。做购物车页面时会要用到。

    关于input[type='text']文本框value改变触发事件一些属性的区别oninput,onpropertychange,onchange和文本框的点击全选状态onclick="s ...

  6. silverlight属性改变事件通知

    工作中遇到silverlight本身没有提供的某些属性改变事件,但又需要在属性改变时得到通知,Google搬运stack overflow,原地址 /// Listen for change of t ...

  7. jQuery之事件和批量操作、事件委托示例

    一.常用事件 click(function(){...}) // 点击时触发 focus(function(){...}) // 获得焦点触发 blur(function(){...}) // 失去焦 ...

  8. javaScript事件机制深入学习(事件冒泡,事件捕获,事件绑定方式,移除事件方式,阻止浏览器默认行为,事件委托,模拟浏览器事件,自定义事件)

    前言 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间.可以使用侦听器(或处理程序)来预订事件,以便事件发生时执行相应的代码.这种在传统软 ...

  9. C#控件事件属性大全

    C#控件及常用设计整 1.窗体... 1 2.Label 控件... 3 3.TextBox 控件... 4 4.RichTextBox控件... 5 5.NumericUpDown 控件... 7 ...

随机推荐

  1. PHP要注意的14个问题

    1.页面之间无法传递变量 get,post,session 在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使 用$_GET['foo'],$_POST['foo'],$ ...

  2. python模块之socket

    43.python模块之socket:       Python在网络通讯方面功能强大,学习一下Socket通讯的基本方式 UDP通讯: Server: import socket port=8081 ...

  3. WCF返回JSON的详细配置

    开发环境:VS2008,c# 1.新建个WCF服务网站 文件-新建-网站-WCF服务 2,运行一下,提示配置WEB.CONFIG,点击确认. 3,打开web.config增加如下节点: <ser ...

  4. Object.defineProperty 规则

  5. while死循环问题-输入字符就会死循环

    问题: 是否会遇到这样的问题,在while循环中 sanf("%d",&a);如果输入的不是数字,是字符就会进入死循环. 解决方案:都是缓冲区惹的祸,输入字符后,字符会一直 ...

  6. C++类:private、public、friend、protected的区别

           private和public的作用是让编译器帮你检查某些模块是否使用了他没权限使用的模块,也就是生成可执行代码的时候做权限检查.比如,公司里各个部门有自己私有的信息,财务部可以看所有员工 ...

  7. 物联网传输协议MQTT

    MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务.MQTT是专门针对物联网开发的轻量级传输协议.MQTT协议针对低 ...

  8. RocksDB介绍:一个比LevelDB更彪悍的引擎

    关于LevelDB的资料网上还是比较丰富的,如果你尚未听说过LevelDB,那请稍微预习一下,因为RocksDB实际上是在LevelDB之上做的改进.本文主要侧重在架构上对RocksDB对LevelD ...

  9. java学习面向对象之this

    在我们讲构造函数的时候,我们知道,如果同时在java的堆内存当中,同时存在好几个刚进内存,但是又没来得及初始化的同一个类的对象.在这种情况下,那么如何去区分栈内存当中的构造函数是属于那个对象的呢,其实 ...

  10. shell command使用技巧

    1窗口可以merge 2.可以通过 control+t打开窗口