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);
                }
            }

 

posted @ 2022-07-21 22:51  Chuanshuo96  阅读(209)  评论(0)    收藏  举报