程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#中自界說事宜和拜托實例

C#中自界說事宜和拜托實例

編輯:C#入門知識

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()一樣是自界說事宜的履行進口,       從這個法開端---〉挪用事宜拜托----〉查找定閱事宜法式找到事宜所封裝的辦法集----〉由拜托回調事宜處置法式並傳遞參數---〉履行事宜處置法式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved