ylbtech-LanguageSamples-Events(事件)
| ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-Events(事件) |
| 1.A,示例(Sample) 返回顶部 |
“事件”示例
本示例演示如何在 C# 中声明、调用和配置事件。有关其他信息,请参见事件(C# 编程指南)。
| 安全说明 |
|---|
|
提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例。对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任。 |
在 Visual Studio 中生成并运行“事件”示例
在“解决方案资源管理器”中,右击“Events1”项目并单击“设为启动项目”。
在“调试”菜单上单击“开始执行(不调试)”。
对于 Events2,请重复前面的步骤。
从命令行生成并运行“事件”示例
使用“更改目录”命令转到“Events1”目录。
键入以下命令:
csc events1.cs
events1使用“更改目录”命令转到“Events2”目录。
键入以下命令:
csc events2.cs
events2
| 1.B,示例代码(Sample Code)返回顶部 |
1.B.1, events1.cs
// 版权所有(C) Microsoft Corporation。保留所有权利。
// 此代码的发布遵从
// Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
//
//版权所有(C) Microsoft Corporation。保留所有权利。 // events1.cs
using System;
namespace MyCollections
{
using System.Collections; // 用于对更改通知进行挂钩的委托类型。
public delegate void ChangedEventHandler(object sender, EventArgs e); // 一个类,其作用与 ArrayList 类似,
// 但在每次列表更改时发送通知。
public class ListWithChangedEvent: ArrayList
{
// 一个事件,每当列表元素更改时,客户端可利用该事件
// 获得通知。
public event ChangedEventHandler Changed; // 调用 Changed 事件;每当列表更改时调用
protected virtual void OnChanged(EventArgs e)
{
if (Changed != null)
Changed(this, e);
} // 重写可更改列表的某些方法;
// 在每个重写后调用事件
public override int Add(object value)
{
int i = base.Add(value);
OnChanged(EventArgs.Empty);
return i;
} public override void Clear()
{
base.Clear();
OnChanged(EventArgs.Empty);
} public override object this[int index]
{
set
{
base[index] = value;
OnChanged(EventArgs.Empty);
}
}
}
} namespace TestEvents
{
using MyCollections; class EventListener
{
private ListWithChangedEvent List; public EventListener(ListWithChangedEvent list)
{
List = list;
// 将“ListChanged”添加到“List”中的 Changed 事件。
List.Changed += new ChangedEventHandler(ListChanged);
} // 每当列表更改时就会进行以下调用。
private void ListChanged(object sender, EventArgs e)
{
Console.WriteLine("This is called when the event fires.");
} public void Detach()
{
// 分离事件并删除列表
List.Changed -= new ChangedEventHandler(ListChanged);
List = null;
}
} class Test
{
// 测试 ListWithChangedEvent 类。
public static void Main()
{
// 创建新列表。
ListWithChangedEvent list = new ListWithChangedEvent(); // 创建一个类,用于侦听列表的更改事件。
EventListener listener = new EventListener(list); // 在列表中添加和移除项。
list.Add("item 1");
list.Clear();
listener.Detach();
}
}
}
1.B.2,
| 1.B,示例代码2(Sample Code)返回顶部 |
1.B.1, events2.cs
// 版权所有(C) Microsoft Corporation。保留所有权利。
// 此代码的发布遵从
// Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
//
//版权所有(C) Microsoft Corporation。保留所有权利。 // events2.cs
using System;
namespace MyCollections
{
using System.Collections; // 一个类,其作用与 ArrayList 类似,
// 但在每次列表更改时发送通知:
public class ListWithChangedEvent: ArrayList
{
// 一个事件,每当列表元素更改时,客户端可利用该事件
// 获得通知:
public event EventHandler Changed; // 调用 Changed 事件;每当列表更改时调用:
protected virtual void OnChanged(EventArgs e)
{
if (Changed != null)
Changed(this,e);
} // 重写可更改列表的某些方法:
// 在每个重写后调用事件:
public override int Add(object value)
{
int i = base.Add(value);
OnChanged(EventArgs.Empty);
return i;
} public override void Clear()
{
base.Clear();
OnChanged(EventArgs.Empty);
} public override object this[int index]
{
set
{
base[index] = value;
OnChanged(EventArgs.Empty);
}
}
}
} namespace TestEvents
{
using MyCollections; class EventListener
{
private ListWithChangedEvent List; public EventListener(ListWithChangedEvent list)
{
List = list;
// 将“ListChanged”添加到“List”中的 Changed 事件:
List.Changed += new EventHandler(ListChanged);
} // 每当列表更改时就会进行以下调用:
private void ListChanged(object sender, EventArgs e)
{
Console.WriteLine("This is called when the event fires.");
} public void Detach()
{
// 分离事件并删除列表:
List.Changed -= new EventHandler(ListChanged);
List = null;
}
} class Test
{
// 测试 ListWithChangedEvent 类:
public static void Main()
{
// 创建新列表:
ListWithChangedEvent list = new ListWithChangedEvent(); // 创建一个类,用于侦听列表的更改事件:
EventListener listener = new EventListener(list); // 在列表中添加和移除项。
list.Add("item 1");
list.Clear();
listener.Detach();
}
}
}
1.B.2,
| 1.C,下载地址(Free Download)返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
ylbtech-LanguageSamples-Events(事件)的更多相关文章
- ActiveX控件的Events事件
http://labview360.com/article/info.asp?TID=10152&FID=165 Active X函式库 对使用LabVIEW作为开发环境的开发人员来说,如果能 ...
- Node.js:events事件模块
Nodejs的大部分核心API都是基于异步事件驱动设计的,所有可以分发事件的对象都是EventEmitter类的实例. 大家知道,由于nodejs是单线程运行的,所以nodejs需要借助事件轮询,不断 ...
- Laravel 的 Events(事件) 及 Observers(观察者)
你是否听说过单一职责原则(single responsibility principle)?我希望是的.它是程序设计的基本原则之一,它基本上的意思就是,一个类有且只有一个职责.换句话说,一个类必须且只 ...
- events(事件): 基础1
1 所有能触发事件的对象都是 EventEmitter 类的实例. 这些对象开放了一个 eventEmitter.on() 函数,允许将一个或多个函数绑定到会被对象触发的命名事件上. 事件名称通 ...
- Lind.DDD.Events事件总线~自动化注册
回到目录 让大叔兴奋的自动化注册 对于领域事件之前说过,在程序启动时订阅(注册)一些事件处理程序,然后在程序的具体位置去发布(触发)它,这是传统的pub/sub模式的体现,当然也没有什么问题,为了让它 ...
- English trip -- VC(情景课) 6 B Events 事件
xu言: ... 自己选择的路,就算是爬,也要给我爬完.短短人生数载,我能之止于此? Words appointment 预约 meeting 会议 class movie party prog ...
- openwrt gstreamer实例学习笔记(七. gstreamer 缓冲区(Buffers)和事件(Events))
1)概述 管道的数据流由一组缓冲区和事件组成,缓冲区包括实际的管道数据,事件包括控制信息,如寻找信息和流的终止信号.所有这些数据流在运行的时候自动的流过管道. 2) 缓冲区(Buffers) 缓冲区包 ...
- javaScirpt事件详解-原生事件基础(一)
事件 JavaScript与HTML之间的交互是通过事件实现的.事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间,通过监听特定事件的发生,你能响应相关的操作.图片引用:UI Events 事件流 ...
- [DOM Event Learning] Section 2 概念梳理 什么是事件 DOM Event
[DOM Event Learning] Section 2 概念梳理 什么是事件 DOM Event 事件 事件(Event)是用来通知代码,一些有趣的事情发生了. 每一个Event都会被一个E ...
- JavaScipt 事件体系
事件机制 jQuery对事件的绑定分别有几个API .bind()/.live()/.delegate()/.on() 不管是用什么方式绑定,归根到底还是用addEventListener/attac ...
随机推荐
- NYOJ 211 Cow Contest (弗洛伊德+传递闭包 )
title: Cow Contest 弗洛伊德+传递闭包 nyoj211 tags: [弗洛伊德,传递闭包] 题目链接 描述 N (1 ≤ N ≤ 100) cows, conveniently nu ...
- bzoj 3196二逼平衡树 线段树套平衡树
比较裸的树套树,对于区间K值bz上有一道裸题,详见题解http://www.cnblogs.com/BLADEVIL/p/3455336.html(其实题解也不是很详细) //By BLADEVIL ...
- poj 2264(LCS)
Advanced Fruits Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 2158 Accepted: 1066 ...
- Android 曲线动画animation,类似加入购物车动画
按照惯例先放效果图:图中小球做抛物线运动 资源图片 1.首先布局文件activity_main.xml,布局很简单,就一个测试按钮 <RelativeLayout xmlns:android=& ...
- 如何设置Google Chrome的界面显示语言
昨天不小心,把Chrome浏览器的界面语言换成了中文, 结果换不回去英文了!!! 这是为啥呀? 我本来使用的是英文界面,换成中文却不让换回原来的语言,这怎么也说不过去吧. Google了一会子也没找到 ...
- gaggd
####算法一 暴力枚举所有可能的$a_2$并递推判断.复杂度$O(r \times k)$,预期得分10分. ####算法二 $a_k$可以表示为$a_1$与$a_2$的线性组合.使用递推计算出系数 ...
- “pip failed to create process”的问题
增加python -m的方法能完美解决pip,easy_install 安装时报错:“pip failed to create process”的问题,据推测应该是64bit操作系统下会是如此. Wi ...
- Codeforces 1023 B.Pair of Toys (Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Fi)
B. Pair of Toys 智障题目(嘤嘤嘤~) 代码: 1 //B 2 #include<iostream> 3 #include<cstdio> 4 #include& ...
- HDU 6318.Swaps and Inversions-求逆序对-线段树 or 归并排序 or 离散化+树状数组 (2018 Multi-University Training Contest 2 1010)
6318.Swaps and Inversions 这个题就是找逆序对,然后逆序对数*min(x,y)就可以了. 官方题解:注意到逆序对=交换相邻需要交换的次数,那么输出 逆序对个数 即可. 求逆序对 ...
- P问题,NP问题 NPC问题 大神解答
http://blog.sina.com.cn/s/blog_5212bec30100o03y.html http://blog.csdn.net/u010385646/article/details ...
