1.设计界面
控件timer1的Interval属性值为:1000
2.编写代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 温度预警
{
public partial class Form1 : Form
{
Random r = new Random(); //产生一个随机数生成器
TemperatureWarning tw = new TemperatureWarning();
public Form1()
{
InitializeComponent();
//第四步:订阅事件
tw.OnWarning += new TemperatureWarning.TemperatureHandler(tw_OnWarning);
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true; //开始每1s改变一次温度
}
//第三步:声明事件产生时调用的方法
private void tw_OnWarning(object sender, TemperatureEventArgs e)
{
if(e.Temperature<35)
{
label2.Text = "正常";
label3.BackColor = Color.Blue;
}
else if(e.Temperature <37)
{
label2.Text = "高温黄色预警!";
label3.BackColor = Color.Yellow;
}
else if (e.Temperature < 40)
{
label2.Text = "高温橙色预警!";
label3.BackColor = Color.Orange;
}
else
{
label2.Text = "高温红色预警";
label3.BackColor = Color.Red;
}
}
//每隔1s激发一次该方法,用来模拟温度值的改变
private void timer1_Tick_1(object sender, EventArgs e)
{
int nowTemp; //原来的温度值
if (textBox1.Text == "")
{
nowTemp = 35;
}
else
{
nowTemp = Convert.ToInt32(textBox1.Text);
}
int change = r.Next(-2, 3); //产生一个在-2——2之间的随机数
textBox1.Text = (change + nowTemp).ToString();//新的温度值
//第五步:触发事件
tw.Monitor(change + nowTemp);
}
}
//第一步:定义事件相关信息类
class TemperatureEventArgs : EventArgs
{
int temperature;
public TemperatureEventArgs(int temperature) //声明构造函数
{
this.temperature = temperature;
}
public int Temperature //定义只读属性
{
get { return temperature; }
}
}
//第二步:定义事件
class TemperatureWarning
{
//2.1声明温度预警的委托类型
public delegate void TemperatureHandler(object sender, TemperatureEventArgs e);
//2.2声明温度预警事件
public event TemperatureHandler OnWarning;
//2.3开始监控气温,同时发布事件
public void Monitor(int tp)
{
TemperatureEventArgs e = new TemperatureEventArgs(tp);
if(OnWarning!=null)
{
OnWarning(this,e);
}
}
}
}
3.运行结果