C#事件机制
------------一、基础知识-----------------------------------------------------------------------------------------------------
OOP:学习面向对象编程的原则、方法、技巧、模式、框架、经验
OOP语言具体内容:
1类、对象
2属性、字段
3方法、事件、接口
4继承
5多态
------------------------------------------------------------------------------------------------------------------------------------
对象:就是我们把要开发的一个或多个任务,按照类别进行封装。类(对象)是程序的最小单元。
面向对象编程:就是把这些小的单位模块,建立一个关系,组成一个系统;
面向对象的本质:基于消息机制(事件机制)
如何理解事件:提前设置好(准备好),根据要求,触发事件,执行事件;
典型地,在C#上位机程序中,就是把要处理的任务,定义好事件,然后有的程序自己
1 namespace Event_Mechanism 2 { 3 //窗体编程用的主文件(开发者写程序是在这个类中写的) 4 //窗体类是部分类,一个类文件分成了两个 5 //FrmMain.cs+FrmMain.Designer.cs 6 public partial class FrmMain : Form// 7 { 8 //类的构造方法 9 public FrmMain() 10 { 11 //窗体创建/显示之前,要将它的子对象全部初始化并且加到容器Control中 12 InitializeComponent(); 13 14 15 //[1]定义事件(这个是由平台定义好的) 16 17 //[3]关联事件 18 19 this.btnTest1.Click += new System.EventHandler(this.btnTest_Click); 20 21 //Click的定义:public event EventHandler Click; 22 //EventHandler的定义:public delegate void EventHandler(object sender, EventArgs e); 23 //事件也是委托的一种,本质还是委托关联委托 24 25 //通过循环方式 26 foreach (Control item in Controls) 27 { 28 if (item is Button ) 29 { 30 ((Button)item).Click += new System.EventHandler(this.btnTest_Click); 31 } 32 } 33 34 } 35 36 //[2]事件处理程序(在这里写要完成的任务的代码) 37 private void btnTest_Click(object sender, EventArgs e) 38 { 39 //sender:表示调用当前事件方法的“控件对象” 40 if (sender is Button ) 41 { 42 MessageBox.Show(((Button)sender).Text); 43 } 44 else if (sender is Label) 45 { 46 MessageBox.Show(((Label)sender).Text); 47 } 48 } 49 50 //[4]激发事件(由用户完成或由程序调用) 51 } 52 }
------------二、事件方法的参数(object sender, EventArgs e)---------------------------------------------------------
(object sender, EventArgs e)
object sender 允许将控件本身作为参数传进来;
private void btnTest_Click(object sender, EventArgs e) { //sender:表示调用当前事件方法的“控件对象” if (sender is Button ) { MessageBox.Show(((Button)sender).Text); } else if (sender is Label) { MessageBox.Show(((Label)sender).Text); } }
------------三、从委托的角度理解事件------------
------------四、事件的使用案例------------

//通过循环方式 foreach (Control item in Controls) { if (item is Button ) { ((Button)item).Click += new System.EventHandler(this.btnTest_Click); } }
浙公网安备 33010602011771号