event

Ŭ·¡½º³ª °³Ã¼¿¡ ƯÁ¤ »óȲÀÌ ¹ß»ýÇÒ ¶§ À̺¥Æ®¸¦ ÅëÇØ ¾Ë·Á ÁÙ¼ö ÀÖ´Ù.

À̺¥Æ®¸¦ º¸³»°Å³ª ¹ß»ý½ÃÅ°´Â Ŭ·¡½º¸¦ °Ô½ÃÀÚ(publisher)¶ó°í ÇÑ´Ù.

À̺¥Æ®¸¦ ¹Þ°Å³ª ó¸® Çϴ Ŭ·¡½º¸¦ ±¸µ¶ÀÚ(subscriber)¶ó°í ÇÑ´Ù.

GUI³ª ½º·¹µå µ¿±âÈ­¿¡ »ç¿ëµÈ´Ù.

.Net Framework Ŭ·¡½º ¶óÀ̺귯¸®¿¡¼­ À̺¥Æ®´Â EventHandler ´ë¸®ÀÚ ¹× EventArgs ±âº» Ŭ·¡½º¸¦ ±â¹ÝÀ¸·Î ÇÑ´Ù.

using System;

public class Button
{
    
public delegate void ClickHandler(object sender, EventArgs e);  // 1. µ¨¸® °ÔÀÌÆ® ¼±¾ð  

    public event ClickHandler Click; // 2.  À̺¥Æ® ¼±¾ð     

 

protected void OnClick()     // 3. ÀνºÆ®½º Á¸Àç È®ÀÎÈÄ ½ÇÇà
{
     if(Click != null)
          Click(this, null);     
}

    public void SimulateClick()
    {
        OnClick();
    }
}

class Play
{
    
public void ButtonHandler(object sender, EventArgs e)  // 4. subscriber´Â µ¨¸®°ÔÀÌÆ®¿Í ½Ã±×³ÊÃĸ¦ ÀÏÄ¡ ½ÃÅ´   
    {
        Console.WriteLine("Button clicked");
    }
}

class Test
{
    public static void Main()
    {
        Button button = new Button();
        Play   play = new Play();

       button.Click += new Button.ClickHandler(play.ButtonHandler);  // 5. +=, -= ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ¸Þ½îµå¸¦ À̺¥Æ®¿¡ ¿¬°á     

        button.SimulateClick();
    }
}

¿©±â¼­ publisher´Â button.SimulateClick()
           subscriber´Â Play.ButtonHandler()

 

1. µ¨¸® °ÔÀÌÆ® ¼±¾ð

µ¨¸® °ÔÀÌÆ®´Â MSDNÀÇ .Net Framework Áöħ¿¡ µû¶ó ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.

[.Net Framwork¿¡¼­ Áö¿øÇÏ´Â EventHandler ´ë¸®ÀÚ]

public delegate void EventHandler(object sender, EventArgs e);

2. À̺¥Æ® ¼±¾ð
µ¨¸®°ÔÀÌÆ® º¯¼ö Á¤ÀÇ¿¡ Á¦ÇÑÀÚ ´ÙÀ½¿¡ event¶ó´Â ¹®À» Ãß°¡ÇÑ´Ù.

3. ÀνºÅϽº Á¸Àç È®ÀÎÈÄ ½ÇÇà
À̺¥Æ® ÀνºÅϽº°¡ ÃʱâÈ­ µÇ¾ú´ÂÁö È®ÀÎÈÄ ½ÇÇàÇÑ´Ù.

4. subscriber´Â µ¨¸®°ÔÀÌÆ®¿Í ½Ã±×³ÊÃĸ¦ ÀÏÄ¡ ½ÃÅ´
.NetÀÇ GUI¸¦ »ç¿ë ÇÒ·Á¸é EventHandler¿Í ½Ã±×³ÊÃĸ¦ ÀÏÄ¡ ½ÃŲ´Ù.

5. +=, -= ¿¬»êÀÚ¸¦ »ç¿ëÇÏ¿© ¸Þ½îµå¸¦ À̺¥Æ®¿¡ ¿¬°á
±×³É µ¨¸®°ÔÀÌÆ® ÀνºÅϽº´Â
button.click = new Button.ClickHandler(play.ButtonHandler)¿Í °°ÀÌ Çصµ ¿¡·¯°¡ ³ªÁö ¾Ê´Â´Ù.
event°¡ µé¾î°£ µ¨¸®°ÔÀÌÆ® ÀνºÅϽº´Â
button.click += new Button.ClickHandler(play.ButtonHandler)ó·³ += , -= ÀÌ¿ëÇØ ÀνºÅϽº¸¦ ÃʱâÈ­ ÇÑ´Ù.

GUI¿¡ »ç¿ëµÇ´Â µ¨¸®°ÔÀÌÆ®¿Í À̺¥Æ®ÀÇ ¿©±â¼­ È®ÀåµÈ´Ù.


[Âü°í]

http://msdn2.microsoft.com/ko-kr/library/awbftdfh(VS.80).aspx

http://msdn2.microsoft.com/ko-kr/library/w369ty8x(VS.80).aspx  (.Net Framework ÁöħÀ» µû¸¥ À̺¥Æ® °Ô½Ã)