c语言sscanf函数的用法是什么
263
2022-09-07
【温度预警程序de开发】事件驱动模型实例运用
写在开头:
事件驱动模型已经在前面的文章给大家做了简单而又生动形象的介绍了,接下来将进行详细的介绍。欢迎关注小哥vx:“编程小哥令狐”。【项目需求】 开发一个温度实时监测程序,程序能够根据温度的变化提示温度变化情况,对应发生颜色变化,增强提示效果。【思路/体会】 温度的实时变化可以通过生成对象调用随机函数,将值动态显示。颜色变化可以通过Windows .NET库提供的颜色库进行调用。关键是你怎么启动成这个程序启动了让它自行执行,这个可以启用Timmer控件,设置时间间隔,封装函数,外部调用即可。整个开发贯穿的就是事件驱动编程的思想。
文章目录
一.定义事件信息相关类与事件警报器
为什么要谈到委托类型?委托就是一种可以动态调用方法的类型,属于引用型。C#实现事件驱动编程模型的主要途径就是利用委托类型实现动态调用方法。 我们之前总是通过指针或者对象访问变量的内存地址,但现在我们需要利用委托对象引用方法的内存地址实现传递和调用。
我们自己定义了一个事件数据类型:TemperatureEventArgs,它还是我们定义的一个类,我们在里面封装好我们需要的数据信息。
我们的类名就是我们的事件数据类型,它同样具有类的所有特性,比如定义构造方法,方法,属性器等等。我们定义的事件数据类型为TemperatureEventArgs,它是从EventArgs进行派生的。它的目的就是:提供保存事件数据所需要的全部字段或者属性,这样事件的发布者就可以将特定的数据发送给接收者。
1.2第二步定义事件警报器:
public delegate 返回值类型 委托类型名(object sender,事件数据类型 e);
code: 我们的委托类型名是自定义的哟!
public delegate void TemperatureHandler(object sender, TemperatureEventArgs e);
public event 委托类型名 事件名;PS: 事件名最好以On_开头比较规范!
public event TemperatureHandler OnWarning;
1.2.3开始监控气温,同时发布事件
public void Monitor(int tp) { TemperatureEventArgs e = new TemperatureEventArgs(tp); if (OnWarning != null) { OnWarning(this, e); } }
二.事件调用
写上代码:
private void Tw_OnWarning(object sender, TemperatureEventArgs e) { if (e.Temperate < 35) { lblShow.Text = "正常"; lblColor.BackColor = Color.Blue; } else if (e.Temperate < 37) { lblShow.Text = "高温黄色预警"; lblColor.BackColor = Color.Yellow; } else if (e.Temperate < 40) { lblShow.Text = "高温橙色预警"; lblColor.BackColor = Color.Orange; } else if (e.Temperate < 37) { lblShow.Text = "高温红色预警"; lblColor.BackColor = Color.Red; } }
2.1在事件接收者类中订阅事件
tw.OnWarning += new TemperatureWaring.TemperatureHandler(Tw_OnWarning);
TemperatureWaring tw = new TemperatureWaring();
2.2触发按钮启动计时
我们先设置好我们的timmer,调节时间间隔1000s 代码:
private void btnMonitor_Click(object sender, EventArgs e) { timer1.Enabled = true; } private void timer1_Tick(object sender, EventArgs e) { int nowTemp; if (txtTemp.Text == "") nowTemp = 35; else nowTemp = Convert.ToInt32(txtTemp.Text); int change = r.Next(-2, 3); txtTemp.Text = (change + nowTemp).ToString(); //第五步 触发事件 tw.Monitor(change + nowTemp); }
三.效果图展示
3.1图示
3.2代码
3.3代码下载地址
提取码:zgu9
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~