首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C#自定义事件:属性改变引发事件示例

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

作者头像
CNXY
发布于 2017-12-25 06:58:29
发布于 2017-12-25 06:58:29
1.3K00
代码可运行
举报
文章被收录于专栏:C# 编程C# 编程
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  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 }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-12-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
事件、委托的定义与使用示例
本文介绍了一种事件、委托的定义以及使用示例。事件是一种在程序运行期间发生的动作,它可以被程序中的其他部分或外部事件触发。委托是一种将方法作为参数传递给另一个方法的机制,它可以用来在类中定义多个具有相似功能的方法。
CNXY
2017/12/25
8710
c# 自定义多选下拉列表2
以下为工作中遇到的,备注一下 先需要几个辅助类 1 #region GripBounds 2 3 using System.Drawing; 4 internal struct GripBounds 5 { 6 private const int GripSize = 6; 7 private const int CornerGripSize = GripSize << 1; 8 9 public GripBounds(Rectangle cl
冰封一夏
2019/09/11
3K0
WPF TreeGrid MVVM 模式下自定义表格带展开缩放效果,并且可以获取点击行的数据
MVVM其实就是:Model 、View、ViewModel三个的简称,就像MVC一样。 Model就是模型。View就是视图。ViewModel就是和view进行绑定的。
Shunnet
2022/05/31
6.4K0
WPF TreeGrid MVVM 模式下自定义表格带展开缩放效果,并且可以获取点击行的数据
自定义CancelEventArgs类,封装事件参数信息,实现e.Cancle=true取消机制。
参考文章:http://blog.csdn.net/lastinglate/article/details/5753113
跟着阿笨一起玩NET
2018/09/18
7130
C#委托五(自定义事件)
"在发生其他类或对象关注的事情时,类或对象可以通过事件通知他们。发送(或引发)事件的类称为"发行者",接受(或处理)事件的类称为"订户"。"
aehyok
2018/09/11
1.3K0
C#委托五(自定义事件)
C#-ListBox多选绑定
ListBox有一个依赖属性SelectedItems,但是这个属性是只读的,所以无法适用绑定,来自动获取多选项,如何通过绑定获取多选项,我们可以使用附加属性来实现。
kdyonly
2024/12/19
2770
[UWP 自定义控件]了解模板化控件(6):使用附加属性
之前的ContentView2添加了PointerOver等效果,和TextBox等本来就有Header的控件放在一起反而变得鹤立鸡群。
dino.c
2019/01/18
6790
[UWP 自定义控件]了解模板化控件(6):使用附加属性
WPF实现基础控件之托盘的示例代码分享
using System.Windows.Controls.Primitives;
用户7718188
2022/11/06
8120
C#中实现自定义事件的代码演示
事件是C#中一个重要的内容,MSDN上有一个自定义事件的演示示例。我看了半天有点晕,所以新建了一个winform工程添加了一个按钮,然后找出调用的程序,一对比做了一个类似的示例,就明白了。看代码有时候比看文档来得更快。
用户8671053
2021/09/23
5450
(三十三)c#Winform自定义控件-日期控件
GitHub:https://github.com/kwwwvagaa/NetWinformControl
冰封一夏
2019/09/11
5.1K0
(三十三)c#Winform自定义控件-日期控件
(三十一)c#Winform自定义控件-文本框(四)
GitHub:https://github.com/kwwwvagaa/NetWinformControl
冰封一夏
2019/09/11
1.5K0
(三十一)c#Winform自定义控件-文本框(四)
[UWP 自定义控件]了解模板化控件(7):支持Command
以我的经验来说,要让TemplatedControl支持Command的需求不会很多,大部分情况用附加属性解决这个需求会更便利些,譬如UWPCommunityToolkit的HyperlinkExtensions。
dino.c
2019/01/18
5660
WPF 绑定密码
我们发现我们无法绑定密码框的密码,PasswordBox 的 Password 不能绑定。 我们想做 MVVM ,我们需要绑定密码,不能使用前台 xaml.cs 监听 密码改变得到密码的值,传到 ViewModel 。 本文提供一个简单方法来绑定 WPF 的 PasswordBox 的 Password 。这种方法不仅在 WPF 可以使用,在 UWP 也可以使用。关于 UWP 绑定密码,可以在我博客 win10 uwp 绑定密码 查看。
林德熙
2018/09/18
1K0
win10 uwp 绑定密码
win10 下,密码框无法绑定到ViewModel,Password是不可以绑定。 我们可以自己使用简单方法去绑定。
林德熙
2018/09/18
7220
(十三)c#Winform自定义控件-导航菜单
GitHub:https://github.com/kwwwvagaa/NetWinformControl
冰封一夏
2019/09/11
4.9K0
(十三)c#Winform自定义控件-导航菜单
C#规范整理·泛型委托事件
基于泛型,我们得以将类型参数化,以便更大范围地进行代码复用。同时,它减少了泛型类及泛型方法中的转型,确保了类型安全。委托本身是一种引用类型,它保存的也是托管堆中对象的引用,只不过这个引用比较特殊,它是对方法的引用。事件本身也是委托,它是委托组,C#中提供了关键字event来对事件进行特别区分。
郑子铭
2023/08/30
3570
C#规范整理·泛型委托事件
(十二)c#Winform自定义控件-分页控件
GitHub:https://github.com/kwwwvagaa/NetWinformControl
冰封一夏
2019/09/11
3.4K0
(十二)c#Winform自定义控件-分页控件
(十)c#Winform自定义控件-横向列表
GitHub:https://github.com/kwwwvagaa/NetWinformControl
冰封一夏
2019/09/11
2.1K0
(十)c#Winform自定义控件-横向列表
(三十)c#Winform自定义控件-文本框(三)
GitHub:https://github.com/kwwwvagaa/NetWinformControl
冰封一夏
2019/09/11
9500
(三十)c#Winform自定义控件-文本框(三)
焦点事件中的Validating处理方法
本文转载:http://tech.it168.com/oldarticle/2006-04-03/200604031055437.shtml
跟着阿笨一起玩NET
2018/09/18
2.3K0
相关推荐
事件、委托的定义与使用示例
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档