Ŭ·¡½º³ª °³Ã¼¿¡ ƯÁ¤ »óȲÀÌ ¹ß»ýÇÒ ¶§ À̺¥Æ®¸¦ ÅëÇØ ¾Ë·Á ÁÙ¼ö ÀÖ´Ù.
À̺¥Æ®¸¦ º¸³»°Å³ª ¹ß»ý½ÃÅ°´Â Ŭ·¡½º¸¦ °Ô½ÃÀÚ(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 ÁöħÀ» µû¸¥ À̺¥Æ® °Ô½Ã)
|