C#中自界說事宜和拜托實例。本站提示廣大學習愛好者:(C#中自界說事宜和拜托實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C#中自界說事宜和拜托實例正文
在windows 編程頂用到最多的就是控件的事宜了,微軟給我們很好的方法,把留意力放到事宜履行辦法的設計和編碼上,然則但我們真正弄懂了事宜的真正動身履行道理的話,對我們的編程的進步真長短常榜的,例如在windows編程中 假如我單擊了一個button按鈕觸發了button 的click事宜 Button1_Click(){} ,然則有時刻我們編程的時刻,不只想要觸發button 的單擊事宜,我還想要把其他的時光也要挪用上去次序履行,要完成這類方法,除在辦法最初對其他辦法的挪用,還可以應用將其他須要次序履行的辦法封裝到button的click 事宜的拜托對象中,如許就可以夠次序履行毀失落辦法列表中的法式了,而這類方法的完成是以清晰事宜觸發和拜托的挪用為條件的。
事宜是類和對象向外界收回的新聞,事宜的履行是經由過程事宜拜托的方法,挪用我們所預備好的處置辦法,而是先新聞的呼應的。要呼應某些事宜並針對某些事宜履行我們意定的辦法,須要做到以下幾步:
1、聲明事宜拜托。
2、聲明事宜。
3、添加事宜的觸發辦法。
4、添加事宜的處置法式(呼應事宜的辦法)。
5、將指定的事宜處置法式邦定到要處置的事宜上(定閱事宜)。
6、用戶信息操作,並觸發事宜(挪用事宜的觸發辦法)。
7、經由過程事宜拜托的回調,履行我們須要的事宜處置法式。
上面我們舉一個簡略的自界說事宜處置法式的例子(掌握台法式)
namespace 事宜
{
//宣布事宜的類
public class TestEventSource
{
//界說事宜參數類
public class TestEventArgs : EventArgs
{
public readonly char KeyToRaiseEvent;
public TestEventArgs(char keyToRaiseEvent)
{
KeyToRaiseEvent = keyToRaiseEvent;
}
}
//界說delegate
public delegate void TestEventHandler(object sender, TestEventArgs e);
//用event 症結字聲明事宜對象
public event TestEventHandler TestEvent;
//事宜觸發辦法
protected virtual void OnTestEvent(TestEventArgs e)
{
if (TestEvent != null)
TestEvent(this, e);
}
//激發事宜
public void RaiseEvent(char keyToRaiseEvent)
{
TestEventArgs e = new TestEventArgs(keyToRaiseEvent);
OnTestEvent(e);
}
}
//監聽事宜的類
public class TestEventListener
{
//界說處置事宜的辦法,他與聲明事宜的delegate具有雷同的參數和前往值類型
public void KeyPressed(object sender, TestEventSource.TestEventArgs e)
{
Console.WriteLine("發送者:{0},所按得健為:{1}", sender, e.KeyToRaiseEvent);
}
//定閱事宜
public void Subscribe(TestEventSource evenSource)
{
evenSource.TestEvent += new TestEventSource.TestEventHandler(KeyPressed);
}
//撤消定閱事宜
public void UnSubscribe(TestEventSource evenSource)
{
evenSource.TestEvent -= new TestEventSource.TestEventHandler(KeyPressed);
}
}
//測試類
public class Test
{
public static void Main()
{
//創立事宜源對象
TestEventSource es = new TestEventSource();
//創立監聽對象
TestEventListener el = new TestEventListener();
//定閱事宜
Console.WriteLine("定閱事宜\n");
el.Subscribe(es);
//激發事宜
Console.WriteLine("輸出一個字符,再按enter鍵");
string s = Console.ReadLine();
es.RaiseEvent(s.ToCharArray()[0]);
//撤消定閱事宜
Console.WriteLine("\n撤消定閱事宜\n");
el.UnSubscribe(es);
//激發事宜
Console.WriteLine("輸出一個字符,再按enter健");
s = Console.ReadLine();
es.RaiseEvent(s.ToCharArray()[0]);
}
}
}
法式履行成果
定閱事宜
輸出一個字符,再按enter鍵
aaaa
發送者:事宜.TestEventSource,所按得健為:a
撤消定閱事宜
輸出一個字符,再按enter健
TestEventSource類。他就相當於windows控件類一樣,是事宜的源,外面包括有事宜的聲明,和存儲挪用參數的事宜參數類,和事宜的觸發辦法。
TestEventListener類。他供給了事宜處置法式,並完成了事宜處置法式和事宜對象的邦定,固然時光處置法式可以放在別處, 跟邦定法式(定閱事宜)放在一路便於懂得和挪用
Test 類,實例化自界說事宜的事宜源對象,並挪用 TestEventListener類中的Subscribe(es);辦法停止事宜對象和事宜處置法式的邦定(定閱事宜),挪用 TestEventSource類中的RaiseEvent(char keyToRaiseEvent)激發對象,並有對象所指定的拜托回調解理事宜。完成全部自界說事宜。
個中 RaiseEvent(char keyToRaiseEvent) 就相當於main()一樣是自界說事宜的履行進口, 從這個法開端---〉挪用事宜拜托----〉查找定閱事宜法式找到事宜所封裝的辦法集----〉由拜托回調事宜處置法式並傳遞參數---〉履行事宜處置法式。