c#关于委托、事件的项目练习demo
·
以下概念性叙述均为个人理解,如有偏颇大家皆可指教
一、运行结果
注意:我将加热器与事件进行了绑定,但是报警器是直接调用方法的效果,大家比对观看

二、项目练习demo
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 委托_事件练习
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//高档热水器包含有加热器、报警器、显示屏,
//1、当热水器水温超过95度,报警器会发出语音提示,
//2、液晶屏显示水温提示,
//观察者模式记录
class MyEvent
{
public event MakeHotMachineHandler temperatureChangeEvent; //定义一个委托类型的事件
}
private void button1_Click(object sender, EventArgs e)
{
//如何绑定事件,如何一个事件去绑定多个方法
//事件实例化
MyEvent eve = new MyEvent();
//绑定事件到方法
eve.temperatureChangeEvent += MakeHotMachine;
if (string.IsNullOrEmpty(textBox1.Text.Trim()))
{
MessageBox.Show("请先输入水温!");
return;
}
MakeHotMachine(Convert.ToInt32(textBox1.Text.Trim()));
TVshow(Convert.ToInt32(textBox1.Text.Trim()));
}
//事件处理方法
//加热器提示水温
public delegate string MakeHotMachineHandler(int temperature);
public string MakeHotMachine(int temperature)
{
if (temperature>=95)
{
label3.Text = "嘀嘀嘀滴,当前水温以达到" + temperature + "摄氏度,请当心烫伤!";
}
else
{
label3.Text = "当前水温以达到" + temperature + "摄氏度";
}
return label3.Text;
}
//显示屏
public string TVshow(int temperature)
{
if (temperature > 95)
{
label4.Text = "咔嚓咔嚓咔嚓,当前水温以达到" + temperature + "摄氏度,请当心烫伤!";
}
else
{
label4.Text = "当前水温以达到" + temperature + "摄氏度";
}
return label4.Text;
}
**三、委托**
1、概念:大家可以把委托理解为“猎头”,代替本公司的人力资源部门去招聘,甲方爸爸只需要和乙方提人员需求,乙方老大让招聘部门去实施招聘。
2、作用
a\委托可以实现两个方法乃至多个方法之间的操作
b\委托像是一个类,它可以变量类型去使用,将方法转化为另一个方法的参数去操作,
例如:
委托的声明:public delegate static GetStudentDelegate();
GetStudent()
{
}
public static Load(GetStudentDelegate GetStudent)
{
GetStudent();
}
**四、事件**
概念:账号关注,关注的人可以查看到被关注的动态,将两者之间的账号单向绑定
更多推荐



所有评论(0)