排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术

前言
事件是通过委托实现的
事件关键字:event
EventArgs类:表示包含事件数据类的基类,并提供用于不包含事件数据的事件的值
什么是事件?
用户操作,如按键、点击、鼠标移动等等
事件定义规则
先定义一个委托
public delegate void May(string status);
// 基于上面的委托定义事件 public event May may;
定义一个事件
- //定义一个标准事件
- public delegate void May(object sender, EventArgs e);
- //事件名
- public event May miao;
-
- //抓老鼠的方法
- public void CathMouse()
- {
- CatMessage catMessage = new CatMessage();
- catMessage.message = "抓老鼠";
- //传递使用委托
- miao(this, catMessage);
-
- }
-
- //定义一个类,使事件接受字符串
- public class CatMessage : EventArgs
- {
- public string message;
- }
定义一个调用事件的方法
- public static void Mouse_Run(object sender, EventArgs e)
- {
- CatMessage cat= e as CatMessage;
-
- Console.WriteLine(cat.message);
-
- }
添加事件
- Cat cat = new Cat();
- cat.miao += Mouse_Run;
- //执行包含委托的方法,这样委托执行过后自动会调用到Mouse_Run这个方法
- cat.CathMouse();
一个简单的事件就定义好了
用事件触发事件
一个事件触发过后,另外一个事件也会被连锁触发
接着上边的案例写,上边只出发了一个事件
那么能不能在出发事件的时候再出发另外一个事件呢?
再定义一个老鼠跑的事件
- public class Mouse
- {
- public delegate void May(object o,EventArgs e);
- public event May mouse;
-
- public void MouseRun()
- {
- MouseMessage mouseMessage = new MouseMessage();
- mouseMessage.Mousemessage = "老鼠跑了";
- mouse(this, mouseMessage);
-
- }
- public class MouseMessage : EventArgs
- {
- public string Mousemessage;
- }
- }
在触发事件的同时,再次触发另外一个事件
先定义老鼠跑的方法
- public static void mouse_run(object o, EventArgs e)
- {
- MouseMessage mouse = e as MouseMessage;
- Console.WriteLine(mouse.Mousemessage);
- }
-
- //在猫抓老鼠的事件中触发老鼠跑的事件
- public static void cat_miao(object sender, EventArgs e)
- {
- CatMessage cat = e as CatMessage;
-
- Console.WriteLine(cat.message);
-
- Mouse mouse = new Mouse();
- mouse.mouse += mouse_run;
- mouse.MouseRun();
-
- }
输出结果
代码运行基本逻辑:
猫抓老鼠的事件触发过后—>输出猫抓老鼠—>抓老鼠执行过后继续执行下一个事件—>老鼠跑—>执行老鼠跑的事件被触发—>输出老鼠跑
连锁调用多个事件也是如此,在调用事件的方法执行过后接着调用下一个方法就可以了
评价