• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#中事件的定义和使用

C#中事件的定义和使用

作者:张逸 字体:[增加 减小] 来源:互联网 时间:2017-05-28

张逸 通过本文主要向大家介绍了c#自定义事件,c#事件定义,c#自定义控件事件,c#中怎样定义事件,c#自定义事件触发等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

事件的声明和使用与代理有很密切的关系,事件其实是一个或多个方法的代理,当对象的某个状态发生了变化,代理会被自动调用,从而代理的方法就被自动执行。

声明和使用一个事件需要如下步骤:

1.创建一个代理。

2.在类的内部利用event关键字声明事件,并且在类中定义调用事件的方法,也可以定义一个处理事件消息的方法。
  声明一个事件的基本形式有两种:
  修饰符  event   类型   标识符
  修饰符  event   类型   标识符{get{};set{};}
其中:
  修饰符是指C#语言的访问修饰符;类型是在声明使用事件的第一步中创建的代理;标识符是一个C#语言的合法标识符,这个标识符被用来在程序中唯一确定声明的事件;在声明事件的第二种形式中具有和类的属性类似的get和set部分,事件的get和set部分意义、使用方法均与属性类似。

3.声明若干个方法与事件关联。将事件同方法进行关联的过程类似于代理对象引用方法的过程。这些方法就是用来处理事件的方法。

4.最后,在程序中使用事件。使用事件需要根据事件的定义或者直接调用事件已经定义好的调用事件的方法,或者通过系统消息来自动触发事件。

用一个例子来说明事件的使用。

创建一个简单的类,名为FileWatch,包含事件OnfileChange。该类将检查在执行应用程序的目录(当前目录,通常是项目名/bin/debug)下,是否存在文件test.txt。如果文件被删除或创建,都将触发事件。同时提供一个方法MonitorFile以不断地查询该文件。

方法:

在创建一个可用事件之前,首先声明一个委托,放在类的外面。

接下来创建类FileWatch。然后声明事件,注意事件的类型即为我们之前定义的委托。


现在创建方法OnFileChange(),当调用该方法时将触发事件:

{
     if (FileWatchEvent!=null)
     {
         FileWatchEvent(this,e);
     }
}</div>

最后,创建方法MonitorFile(),

{
    bool bCurrentStatus;
  
    while(true)
    {
         bCurrentStatus = File.Exists("test.txt");
         if (bCurrentStatus != _bLastStatus) //_bLastStatus为私有字段,初始值为false;
         {
             _bLastStatus = bCurrentStatus;
             OnFileChange(EventArgs.Empty);
         }
   
         Thread.Sleep(250);
    }
}</div>

完整代码如下:

using System.Threading;
using System.IO;     

namespace Sample.Event
{

      public delegate void FileWatchEventHandler(object sender, EventArgs e);

      public class FileWatch
      {
            private bool _bLastStatus = false;
            public FileWatch()
            {
                  //
                  // TODO: 在此处添加构造函数逻辑
                  //
            }

            public event FileWatchEventHandler FileWatchEvent;

            protected virtual void OnFileChange(EventArgs e)
            {
                  if (FileWatchEvent != null)
                  {
                      
                        FileWatchEvent(this, e);
                  }
            }

            public void MonitorFile()
            {
                  bool bCurrentStatus;

                  while(true)
                  {
                        bCurrentStatus = File.Exists("test.txt");

                        //状态不符,说明文件被删除或重新创建,此时触发事件;
                        if ( bCurrentStatus != _bLastStatus )
                        {
                              _bLastStatus = bCurrentStatus;
                              OnFileChange( EventArgs.Empty );

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#中事件的定义和使用
  • C#自定义类型强制转换实例分析
  • C#自定义事件及用法实例
  • C#自定义导出数据到Excel的类实例
  • C#实现自定义双击事件

相关文章

  • 2017-05-28c#使用netmail方式发送邮件示例
  • 2017-05-28用C#编写ActiveX控件(一)
  • 2017-05-28如何应用C#实现UDP的分包组包
  • 2017-05-28C#多线程学习之(三)生产者和消费者用法分析
  • 2017-05-28C#实现的一款比较美观的验证码完整实例
  • 2017-05-28C#判断日期是否到期的方法
  • 2017-05-28C#实现判断当前操作用户管理角色的方法
  • 2017-05-28C#中使用IFormattable实现自定义格式化字符串输出示例
  • 2017-05-28C#如何对多线程、多任务管理(demo)
  • 2017-05-28C#中循环语句:while、for、foreach的使用

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#如何解析http报文
    • automation服务器不能创建对象 解决方法
    • c# 连接access数据库config配置
    • C#中获取、生成随机数的三种方法
    • C#清除字符串内空格的方法
    • .net中前台javascript与后台c#函数相互调用问题
    • C#约瑟夫问题解决方法
    • C#实现的XML操作类实例
    • C#控制台基础 List泛型集合与对应的数组相互转换实现代码
    • C#生成唯一值的方法汇总

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有