C#语法:委托与事件

来源:互联网 发布:临时身份证制作软件 编辑:程序博客网 时间:2024/05/29 12:37
在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 = "假装这里是查询出来的数据";        }    }}

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


原创粉丝点击