日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 委托+事件的例子:①温度报警②计算器

發(fā)布時間:2024/2/28 C# 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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; //實例化 委托只能是publicMyMath math = new MyMath(); //為了能夠使用其中的函數(shù) new的作用是:申請對象所需要的存儲器 math相當(dāng)于一個指針 如果不new,相當(dāng)于這個對象是一個空指針int op1; //第一操作數(shù)int op2; //第二操作數(shù)bool isContinue = true; //是否連續(xù)輸入//運算符按鈕的操作private void buttonCalc_Click(object sender, EventArgs e){isContinue = false; //點擊運算符后,下一個數(shù)字不是連續(xù)輸入,所以讓isContinue = falseif (handler == null) //如果沒有函數(shù)被委托{op1 = int.Parse(textBox1.Text); //把文字框中的數(shù)字 設(shè)置為第一操作數(shù)}else //如果有函數(shù)被委托 將該運算符之前的委托運算先計算出來{op2 = int.Parse(textBox1.Text); //把新輸入的數(shù)字 設(shè)置為第二個操作數(shù)op1 = handler(op1, op2); //運算結(jié)果 作為下一次運算的第一操作數(shù)textBox1.Text = op1.ToString(); //把上一次的運算結(jié)果輸出到文字框中}if (sender is Button) //運算過程{Button btn = (Button)sender; //把該運算符對應(yīng)的運算添加到委托中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;}}}//數(shù)字按鈕的操作private void buttonNum_Click(object sender, EventArgs e){if (sender is Button)//sender是對象名 判斷左邊這個對象是不是右邊這個類型的 如果是 則轉(zhuǎn)換{Button btn = (Button)sender;if (isContinue){textBox1.Text += btn.Text;}else{isContinue = true; //輸入一個數(shù)字后,下一個數(shù)字為連續(xù)輸入textBox1.Text = btn.Text;}}}//數(shù)字類按鈕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); //聲明委托 委托是一個類型安全的函數(shù)指針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)容還不錯,歡迎將生活随笔推薦給好友。