生活随笔
收集整理的這篇文章主要介紹了
C# 委托+事件的例子:①温度报警②计算器
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
計算器
代碼
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 第
8章_事件
{public partial class Form1
: Form
{public
Form1(){InitializeComponent();}public Calculate handler
; MyMath math
= new
MyMath(); int op1
; int op2
; bool isContinue
= true
; private
void buttonCalc_Click(object sender
, EventArgs e
){isContinue
= false
; if (handler
== null
) {op1
= int.Parse(textBox1
.Text
); }else {op2
= int.Parse(textBox1
.Text
); op1
= handler(op1
, op2
); textBox1
.Text
= op1
.ToString(); }if (sender is Button
) {Button btn
= (Button
)sender
; switch (btn
.Text
){case "+":handler
+= new
Calculate(math
.Add
); break;case "-":handler
+= new
Calculate(math
.Sub
); break;case "*":handler
+= new
Calculate(math
.Mul
); break;case "/":handler
+= new
Calculate(math
.Div
); break;case "=":handler
= null
; break;}}}private
void buttonNum_Click(object sender
, EventArgs e
){if (sender is Button
){Button btn
= (Button
)sender
;if (isContinue
){textBox1
.Text
+= btn
.Text
;}else{isContinue
= true
; textBox1
.Text
= btn
.Text
;}}}private
void button2_Click(object sender
, EventArgs e
){buttonNum_Click(sender
, e
);}private
void button3_Click(object sender
, EventArgs e
){buttonNum_Click(sender
, e
);}private
void button4_Click(object sender
, EventArgs e
){buttonNum_Click(sender
, e
);}private
void button7_Click(object sender
, EventArgs e
){buttonNum_Click(sender
, e
);}private
void button6_Click(object sender
, EventArgs e
){buttonNum_Click(sender
, e
);}private
void button5_Click(object sender
, EventArgs e
){buttonNum_Click(sender
, e
);}private
void button10_Click(object sender
, EventArgs e
){buttonNum_Click(sender
, e
);}private
void button9_Click(object sender
, EventArgs e
){buttonNum_Click(sender
, e
);}private
void button8_Click(object sender
, EventArgs e
){buttonNum_Click(sender
, e
);}private
void button15_Click(object sender
, EventArgs e
){buttonCalc_Click(sender
, e
);}private
void button14_Click(object sender
, EventArgs e
){buttonCalc_Click(sender
, e
);}private
void button13_Click(object sender
, EventArgs e
){buttonCalc_Click(sender
, e
);}private
void button12_Click(object sender
, EventArgs e
){buttonCalc_Click(sender
, e
);}private
void button1_Click(object sender
, EventArgs e
){buttonCalc_Click(sender
, e
);}}public delegate
int Calculate(int x
, int y
); class MyMath
{public
int Add(int x
, int y
){return x
+ y
;}public
int Mul(int x
, int y
){return x
* y
;}public
int Sub(int x
, int y
){return x
- y
;}public
int Div(int x
, int y
){return x
/ y
;}}
}
溫度預(yù)警模擬
代碼
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{Random r = new Random();//隨機數(shù)生成器TemperatureWarning tw = new TemperatureWarning();//創(chuàng)建溫度警報器對象public Form1(){InitializeComponent();//訂閱事件tw.OnWarning += new TemperatureWarning.TemperatureHandler(tw_OnWarning);}private void tw_OnWarning(object sender, TemperatureEventArgs e){if (e.Temperature < 35){label2.Text = "正常";textBox2.BackColor = Color.Blue;}else if (e.Temperature < 37){label2.Text = "高溫黃色預(yù)警";textBox2.BackColor = Color.Yellow;}else if (e.Temperature < 37){label2.Text = "高溫橙色預(yù)警";textBox2.BackColor = Color.Orange;}else{label2.Text = "高溫紅色預(yù)警";textBox2.BackColor = Color.Red;}}private void button1_Click(object sender, EventArgs e){timer1.Enabled = true; //啟動計時器,開始每1秒改變一次溫度}private void timer1_Tick(object sender, EventArgs e){int nowTemp;//現(xiàn)在的溫度if (textBox1.Text == "") nowTemp = 35;else{nowTemp = int.Parse(textBox1.Text);}int change = r.Next(-2, 3);textBox1.Text = (change + nowTemp).ToString();//新的溫度tw.Monitor(change + nowTemp);}}//定義事件相關(guān)信息類class TemperatureEventArgs : EventArgs{private int temperature;public TemperatureEventArgs(int temperature)//構(gòu)造函數(shù){this.temperature = temperature;}public int Temperature //定義只讀屬性{get { return temperature; }}}//定義事件警報器class TemperatureWarning{//聲明溫度預(yù)警的委托類型public delegate void TemperatureHandler(object sender, TemperatureEventArgs e);//聲明溫度預(yù)警事件public event TemperatureHandler OnWarning;//開始監(jiān)控氣溫,同時發(fā)布事件public void Monitor(int tp){TemperatureEventArgs e = new TemperatureEventArgs(tp);if (OnWarning != null){OnWarning(this, e);}}}
}
總結(jié)
以上是生活随笔為你收集整理的C# 委托+事件的例子:①温度报警②计算器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。