排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术
分类:
.net
前言
事件是通过委托实现的
事件关键字: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();
}输出结果
代码运行基本逻辑:
猫抓老鼠的事件触发过后—>输出猫抓老鼠—>抓老鼠执行过后继续执行下一个事件—>老鼠跑—>执行老鼠跑的事件被触发—>输出老鼠跑
连锁调用多个事件也是如此,在调用事件的方法执行过后接着调用下一个方法就可以了
评价