事件(event)
先來看看事件編程有哪些好處
在以往我們編寫這類程序中
有了這麼多好處
要講事件
委托(delegate)
委托可以理解成為函數指針
事件(event)
我們可以把事件編程簡單地分成兩個部分
引自MSDN:
EventArgs是包含事件數據的類的基類
因為在我們鍵盤按鍵事件中要包含按鍵信息
internal class KeyEventArgs : EventArgs
{
private char keyChar;
public KeyEventArgs( char keyChar ) : base()
{
this
}
public char KeyChar
{
get
{
return keyChar;
}
}
}
internal class KeyInputMonitor
{
// 創建一個委托
public delegate void KeyDown( object sender
// 將創建的委托和特定事件關聯
public event KeyDown OnKeyDown;
public void Run()
{
bool finished = false;
do
{
Console
string response = Console
char responseChar = ( response ==
switch( responseChar )
{
case
finished = true;
break;
default:
// 得到按鍵信息的參數
KeyEventArgs keyEventArgs = new KeyEventArgs( responseChar );
// 觸發事件
OnKeyDown( this
break;
}
}while( !finished );
}
}
這裡注意OnKeyDown( this
internal class EventReceiver
{
public EventReceiver( KeyInputMonitor monitor )
{
// 產生一個委托實例並添加到KeyInputMonitor產生的事件列表中
monitor
}
private void Echo(object sender
{
// 真正的事件處理函數
Console
}
}
public class MainEntryPoint
{
public static void Start()
{
// 實例化一個事件發送器
KeyInputMonitor monitor = new KeyInputMonitor();
// 實例化一個事件接收器
EventReceiver eventReceiver = new EventReceiver( monitor );
// 運行
monitor
}
}
總結
C#中使用事件需要的步驟
C#中事件產生和實現的流程
From:http://tw.wingwit.com/Article/program/net/201311/15725.html