在 .Net 中实现自定义事件
.Net 中的自定义事件,其实是利用委托实现,大概可以分为以下几个步骤:
1、定义事件传送的 EventArgs ,当然也可以直接使用系统的 EventArgs。
2、定义该事件类型的委托。
3、定义事件的处理方法。
4、在需要的地方抛出事件,抛出的事件会在外部被捕捉到。
我们以一个简单的计算程序为例讲解,该程序实现计算两个给定数字的和,当结果<=100时,正常计算,但结果>100时,触发事件。然后我们在计算方法外捕捉该事件。这就是整个自定义事件及捕捉的过程。
代码如下,说明请查看注释:
- class LevelHighArgs : EventArgs
- {
- int _highValue = 0;
- public int HighValue
- {
- get { return _highValue; }
- set { _highValue = value; }
- }
- public LevelHighArgs(int _highValue)
- {
- this._highValue = _highValue;
- }
- }
-
-
- class AddTowInt
- {
-
- public delegate void LevelHigh(object sender, LevelHighArgs e);
- public event LevelHigh OnLevelHigh;
- int _addedValue = 0;
- public int AddedValue
- {
- get { return _addedValue; }
- set { _addedValue = value; }
- }
- public AddTowInt()
- { }
- public void DoAdd(int a1, int a2)
- {
- _addedValue = a1 + a2;
- if (_addedValue > 100)
- {
- LevelHighArgs lha = new LevelHighArgs(_addedValue - 100);
-
-
- OnLevelHigh(this, lha);
- }
- }
- }
-
-
- class Program
- {
- static void Main(string[] args)
- {
-
- AddTowInt ati = new AddTowInt();
-
- ati.OnLevelHigh += new AddTowInt.LevelHigh(ati_OnLevelHigh);
-
- ati.DoAdd(23, 78);
- Console.WriteLine(ati.AddedValue);
- Console.ReadLine();
- }
- static void ati_OnLevelHigh(object sender, LevelHighArgs e)
- {
-
- Console.WriteLine("结果已经超过 100: " + e.HighValue);
- }
- }
posted on 2008-11-03 00:58
BeyondCN 阅读(502)
评论(0) 编辑 收藏 引用 所属分类:
.NET