在C#中,每一个事件都是依靠委托来完成的。本次写的是如何编写自定义事件。其实不难,按步骤来就行...

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Csharp窗体练习
{public delegate void ShowCounterDel(string str);//【1】声明个委托public partial class EventDemo : Form{public event ShowCounterDel ShowCounterEvent;  //【2】定义个事件void OnClickEvent(string str)               //【3】事件内容{Console.WriteLine("MyForm: 我知道你被执行了!" + str);}public void Run()                               //【5】触发事件的方法{if (ShowCounterEvent != null){Console.WriteLine("Run GOGOGO");ShowCounterEvent("ShowCounterEvent GOGOGO");}}public EventDemo(){InitializeComponent();Console.WriteLine("EventDemo Initial");ShowCounterEvent += new ShowCounterDel(OnClickEvent);  //【4】将事件内容和事件对象联系起来}private void EventDemo_Load(object sender, EventArgs e){Run();                                                  //【6】调用事件触发方法}}
}

控制台输出:

EventDemo Initial

Run GOGOGO

MyForm: 我知道你被执行了!ShowCounterEvent GOGOGO

代码说明:自定义事件主要分为六步:

【1】、声明一个委托。之前有提到过,委托的返回值和参数与需要关联的方法一致。

【2】、定义一个事件。关键字event + 委托名 +事件名

【3】、事件内容:触发事件后执行的代码。

【4】、将事件内容和事件对象通过委托联系起来

【5】、编写触发事件的方法:也是触发事件的条件

【6】、执行触发事件的方法。

按照这些步骤,实现如下功能:一个窗体中有一个查询按钮,单击该按钮可以显示查询出来的数据,在此基础上增加一个功能,在窗体加载的时候执行查询按钮事件里的所有内容。换句话说就是在界面加载的时候,系统自动单击一次查询按钮。

窗体界面设计如图所示:一个查询按钮(btnSearch) 和一个label

代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Csharp窗体练习
{public delegate void LoadPageHandler(object sender, EventArgs e);//【1】声明个委托public partial class EventDemo : Form{public event LoadPageHandler LoadPageEvent;  //【2】定义个事件public void PageLoadRun()//【5】触发事件的方法{if (LoadPageEvent != null){LoadPageEvent(this, null);}}public EventDemo(){InitializeComponent();LoadPageEvent += new LoadPageHandler(btnSearch_Click); //【4】将事件内容和事件对象联系起来}private void EventDemo_Load(object sender, EventArgs e){PageLoadRun();                             //【6】调用事件触发方法}private void btnSearch_Click(object sender, EventArgs e)   //【3】事件内容{label1.Text = "假装这里是查询出来的数据";}}}

执行之后,当页面加载出来后就如图所示。

C#语法:委托与事件相关推荐

  1. [C#]委托和事件(讲解的非常不错)

    引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 ...

  2. 大白话系列之C#委托与事件讲解(一)

    从序言中,大家应该对委托和事件的重要性有点了解了吧,虽然说我们现在还是能模糊,但是从我的大白话系列中,我会把这些概念说的通俗易懂的.首先,我们还是先说说委托吧,从字面上理解,只要是中国人应该都知道这个 ...

  3. 对C#下函数,委托,事件的一点理解!

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 今天一来是有点 ...

  4. C# 关于委托和事件的妙文:通过一个例子详细介绍委托和事件的作用;Observer模式简介...

    委托和事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见 ...

  5. 委托与事件代码详解与(Object sender,EventArgs e)详解

    委托与事件代码详解 using System; using System.Collections.Generic; using System.Text; namespace @Delegate //自 ...

  6. C#委托与事件学习笔记

    今天跟随视频学习了一下C#中最重要的一些概念之委托与事件.老杨的视频讲的还是挺深入浅出,不过刚接触C#.NET的人还是朦朦胧胧,就像张子阳先生说的"每次见到委托和事件就觉得心里别(biè)得 ...

  7. C#笔记(二):委托与事件

    本文内容: 1.  委托定义 2.  申明委托 3. 委托的实例化 4. 委托的调用 5. 匿名方法 6. 委托程序实例  7. 事件定义 8. 事件的申明 9. 事件的调用 10. 事件订阅与移除 ...

  8. java委托事件与观察者模式_多播委托与观察者模式联合使用,以及委托与事件的区别...

    首先我们先看一下多播委托: 使用委托时,首先我们声明委托,委托语法一共有四种类型,分别时有参,无参,以及有无参数返回值. 1 public class DelegateShow //: System. ...

  9. C# 委托(Delegate) 事件(Event)应用详解

    委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每 ...

最新文章

  1. 搜推广遇上用户画像:Lookalike相似人群拓展算法
  2. ThreadLocal父子线程传递实现方案
  3. java生命小游戏_Java修炼——飞机生存小游戏
  4. 宽带ADSL安装过程的18个问答
  5. ActiveMQ之Topic
  6. Atitit 提升用户体验 生物识别 与登录 身份验证
  7. 投资人不投了、撤资了,创业者怎么办?
  8. 友情链接对于网站来说有什么作用?
  9. TZC Python编程入门教程 ————题解
  10. Oracle迁移到mysql字符集_oracle数据库字符集characterset迁移及变更系列一
  11. sql 纵向求和_SQL求和
  12. 26岁那年,我创业了
  13. 【JavaEE】网络编程之TCP套接字、UDP套接字
  14. 破解软件的原理是什么(软件被破解公开)
  15. JavaScript笔记(狂神说)
  16. ThinkPad各型号Win7系统恢复光盘镜像下载【官方下载】绝对原版
  17. python echarts城市热力图_ECharts-热力图实例
  18. 什么是防火墙?防火墙的作用?
  19. staruml 4.0下载安装
  20. 重新定义车载语音交互:服务“全家人”的“自由对话”

热门文章

  1. 使用nginx+Apache负载均衡及动静分离
  2. 最近学习linux-c的编程
  3. sigaction函数解析
  4. HCP Anywhere:为HDS内容云锦上添花
  5. Unable to locate package php5-curl
  6. Forefront TMG2010中文版安装体验
  7. [ASP.NET] 限制上传文件类型的两种方法(转)
  8. Spring AOP相关术语解释及简单使用
  9. kafka describe topic
  10. k8s kubectl run命令使用详解