C# 事件(Event) - HTML Tutorial
文章推薦指數: 80 %
C# 事件(Event) ... 事件(Event)基本上說是一個用戶操作,如按鍵、點擊、鼠標移動等等,或者是一些出現,如係統生成的通知。
應用程序需要在事件發生時響應事件。
例如, ...
w3big.com
Latestwebdevelopmenttutorials
☰
HTML
CSS
JAVASCRIPT
SQL
PHP
BOOTSTRAP
JQUERY
ANGULAR
XML
PYTHON
简体中文繁體中文日本语한국어ไทยالعربيةPortuguêsIndonesiaEspañolItalianoDeutschFrançaisPусскийpolskiEnglish
×
×
×
×
C#教程
C#教程
C#簡介
C#環境
C#程序結構
C#基本語法
C#數據類型
C#類型轉換
C#變量
C#常量
C#運算符
C#判斷
C#循環
C#封裝
C#方法
C#可空類型
C#數組(Array)
C#字符串(String)
C#結構(Struct)
C#枚舉(Enum)
C#類(Class)
C#繼承
C#多態性
C#運算符重載
C#接口(Interface)
C#命名空間(Namespace)
C#預處理器指令
C#正則表達式
C#異常處理
C#文件的輸入與輸出
C#高級教程
C#特性(Attribute)
C#反射(Reflection)
C#屬性(Property)
C#索引器(Indexer)
C#委託(Delegate)
C#事件(Event)
C#集合(Collection)
C#泛型(Generic)
C#匿名方法
C#不安全代碼
C#多線程
C#事件(Event)
上一頁:C#委託(Delegate)下一頁:C#集合(Collection)事件(Event)基本上說是一個用戶操作,如按鍵、點擊、鼠標移動等等,或者是一些出現,如係統生成的通知。
應用程序需要在事件發生時響應事件。
例如,中斷。
事件是用於進程間通信。
通過事件使用委託事件在類中聲明且生成,且通過使用同一個類或其他類中的委託與事件處理程序關聯。
包含事件的類用於發布事件。
這被稱為發佈器(publisher)類。
其他接受該事件的類被稱為訂閱器(subscriber)類。
事件使用發布-訂閱(publisher-subscriber)模型。
發佈器(publisher)是一個包含事件和委託定義的對象。
事件和委託之間的聯繫也定義在這個對像中。
發佈器(publisher)類的對象調用這個事件,並通知其他的對象。
訂閱器(subscriber)是一個接受事件並提供事件處理程序的對象。
在發佈器(publisher)類中的委託調用訂閱器(subscriber)類中的方法(事件處理程序)。
聲明事件(Event)在類的內部聲明事件,首先必須聲明該事件的委託類型。
例如:publicdelegatevoidBoilerLogHandler(stringstatus);
然後,聲明事件本身,使用event關鍵字://基於上面的委託定義事件publiceventBoilerLogHandlerBoilerEventLog;
上面的代碼定義了一個名為BoilerLogHandler的委託和一個名為BoilerEventLog的事件,該事件在生成的時候會調用委託。
實例1usingSystem;
namespaceSimpleEvent
{
usingSystem;
publicclassEventTest
{
privateintvalue;
publicdelegatevoidNumManipulationHandler();
publiceventNumManipulationHandlerChangeNum;
protectedvirtualvoidOnNumChanged()
{
if(ChangeNum!=null)
{
ChangeNum();
}
else
{
Console.WriteLine("Eventfired!");
}
}
publicEventTest(intn)
{
SetValue(n);
}
publicvoidSetValue(intn)
{
if(value!=n)
{
value=n;
OnNumChanged();
}
}
}
publicclassMainClass
{
publicstaticvoidMain()
{
EventTeste=newEventTest(5);
e.SetValue(7);
e.SetValue(11);
Console.ReadKey();
}
}
}
當上面的代碼被編譯和執行時,它會產生下列結果:EventFired!
EventFired!
EventFired!
實例2本實例提供一個簡單的用於熱水鍋爐系統故障排除的應用程序。
當維修工程師檢查鍋爐時,鍋爐的溫度和壓力會隨著維修工程師的備註自動記錄到日誌文件中。
usingSystem;
usingSystem.IO;
namespaceBoilerEventAppl
{
//boiler類classBoiler
{
privateinttemp;
privateintpressure;
publicBoiler(intt,intp)
{
temp=t;
pressure=p;
}
publicintgetTemp()
{
returntemp;
}
publicintgetPressure()
{
returnpressure;
}
}
//事件發佈器classDelegateBoilerEvent
{
publicdelegatevoidBoilerLogHandler(stringstatus);
//基於上面的委託定義事件publiceventBoilerLogHandlerBoilerEventLog;
publicvoidLogProcess()
{
stringremarks="O.K";
Boilerb=newBoiler(100,12);
intt=b.getTemp();
intp=b.getPressure();
if(t>150||t<80||p<12||p>15)
{
remarks="NeedMaintenance";
}
OnBoilerEventLog("LoggingInfo:\n");
OnBoilerEventLog("Temparature"+t+"\nPressure:"+p);
OnBoilerEventLog("\nMessage:"+remarks);
}
protectedvoidOnBoilerEventLog(stringmessage)
{
if(BoilerEventLog!=null)
{
BoilerEventLog(message);
}
}
}
//該類保留寫入日誌文件的條款classBoilerInfoLogger
{
FileStreamfs;
StreamWritersw;
publicBoilerInfoLogger(stringfilename)
{
fs=newFileStream(filename,FileMode.Append,FileAccess.Write);
sw=newStreamWriter(fs);
}
publicvoidLogger(stringinfo)
{
sw.WriteLine(info);
}
publicvoidClose()
{
sw.Close();
fs.Close();
}
}
//事件訂閱器publicclassRecordBoilerInfo
{
staticvoidLogger(stringinfo)
{
Console.WriteLine(info);
}//endofLogger
staticvoidMain(string[]args)
{
BoilerInfoLoggerfilelog=newBoilerInfoLogger("e:\\boiler.txt");
DelegateBoilerEventboilerEvent=newDelegateBoilerEvent();
boilerEvent.BoilerEventLog+=new
DelegateBoilerEvent.BoilerLogHandler(Logger);
boilerEvent.BoilerEventLog+=new
DelegateBoilerEvent.BoilerLogHandler(filelog.Logger);
boilerEvent.LogProcess();
Console.ReadLine();
filelog.Close();
}//endofmain
}//endofRecordBoilerInfo
}
當上面的代碼被編譯和執行時,它會產生下列結果:Logginginfo:
Temperature100
Pressure12
Message:O.K
上一頁:C#委託(Delegate)下一頁:C#集合(Collection)
延伸文章資訊
- 1C# 事件(上) - 使用委派來實作事件 - iT 邦幫忙
C#的事件我在ASP.NET MVC中印像中是沒有看過,envent應該是在視窗程式或WebForm上才會看到?。不過記得以前寫WebForm的過程中,雖然每個控制項都會用到事件,但記得我 ...
- 2C# Development | 事件( Event ) 及委派事件( EventHandler ) 的 ...
C# Development | 事件( Event ) 及委派事件( EventHandler ) 的用法 ... 目前在寫設備控制的SDK ,而事件( Event ) 十分的好用,假設要執行...
- 3[C#語法] 事件(Event)使用簡單三步| 誠的碼記本 - - 點部落
用C#自訂事件簡單作法. ... 委派 delegate void EventPrototype(object sender, EventArgs e); //宣告事件 public event...
- 4C# 事件(Event) - HTML Tutorial
C# 事件(Event) ... 事件(Event)基本上說是一個用戶操作,如按鍵、點擊、鼠標移動等等,或者是一些出現,如係統生成的通知。應用程序需要在事件發生時響應事件。 例如, ...
- 5[C#]使用委派(Delegate)與事件(Event) - HackMD
[C#]使用委派(Delegate)與事件(Event) ###### tags: `C#` `Programming` :::spoiler Log - 2019/05/01 version.