23-2.ÄÁÅؽºÆ® ¸Þ´º

23-2-1.ÄÁÅؽºÆ® ¸Þ´º

ÄÁÅؽºÆ® ¸Þ´º´Â ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´©¸£¸é ³ªÅ¸³ª´Â ¸Þ´ºÀÌ´Ù. Æ˾÷ ¸Þ´º, ·ÎÄà ¸Þ´º, ¼îÆ®ÄÆ ¸Þ´º, ¹Ù·Î °¡±â ¸Þ´º µîµîÀÇ ´Ù¾çÇÑ À̸§À¸·Î ºÒ¸®´Âµ¥ ´å³Ý¿¡¼­´Â °ø½ÄÀûÀ¸·Î ÄÁÅؽºÆ® ¸Þ´º¶ó°í ºÎ¸¥´Ù. Æò¼Ò¿¡´Â º¸ÀÌÁö ¾Ê¾Æ ÀÚ¸®¸¦ Â÷ÁöÇÏÁö ¾ÊÀ¸¸ç ´©¸¥ À§Ä¡¿¡ ¿­·Á ¼±ÅÃÇϱ⵵ Æí¸®ÇÏ´Ù. ÇöÀç »óȲ¿¡ ²À ÇÊ¿äÇÑ ¸í·É¸¸ ¼±º°ÀûÀ¸·Î ³ªÅ¸³ª¹Ç·Î ¿øÇÏ´Â ¸í·ÉÀ» ã±âµµ ½±´Ù.

¿©·¯ °¡Áö ÀåÁ¡ÀÌ ÀÖ¾î ÀÏ»óÀûÀ¸·Î ³Î¸® È°¿ëµÈ´Ù. ¿î¿µÃ¼Á¦µµ ¹ÙÅÁÈ­¸éÀ̳ª ÀÛ¾÷ Ç¥½ÃÁÙ µî ´ëºÎºÐÀÇ Ç׸ñ¿¡ ÄÁÅؽºÆ® ¸Þ´º¸¦ Á¦°øÇϸç È­¸é °¢ ºÎºÐ¿¡ ÄÁÅؽºÆ® ¸Þ´º¸¦ ¿©±âÀú±â ¼û°Ü ³õ¾Ò´Ù. ºñÁÖ¾ó ½ºÆ©µð¿Àµµ ¼Ò½º ÆíÁýâÀ̳ª µðÀÚÀÎâ ½ÉÁö¾î Åø¹Ù±îÁöµµ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´­·¯ º¸¸é ÄÁÅؽºÆ® ¸Þ´º°¡ ºÒ¾¦ ºÒ¾¦ ³ªÅ¸³­´Ù. ÄÁÅؽºÆ® ¸Þ´º°¡ ¾ø´Â °÷À» ã±â°¡ ¿ÀÈ÷·Á ´õ Èûµé Áö°æÀÌ´Ù.

ÄÁÅؽºÆ® ¸Þ´º´Â ContextMenuStripÀ¸·Î Ç¥ÇöÇϴµ¥ ¸ÞÀÎ ¸Þ´º¿Í ¸¶Âù°¡Áö·Î ToolStripÀÇ ÈļÕÀ̹ǷΠ°øÀ¯ÇÏ´Â ±â´ÉÀÌ ¸¹´Ù. µÑ ´Ù ¸Þ´º Ç׸ñÀ» ´ã´Â ÄÁÅ×À̳ʶó´Â ¸é¿¡¼­ µ¿ÀÏÇÏ¸ç µðÀÚÀ̳ʿ¡¼­ ÆíÁýÇÏ´Â ¹æ¹ý, À̺¥Æ® Çڵ鷯¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ý µîÀÌ °ÅÀÇ °°´Ù. µµ±¸ »óÀÚ¿¡¼­ ContextMenuStrip ÄÁÆ®·ÑÀ» Æû¿¡ ¶³¾î¶ß¸®¸é ÇÏ´ÜÀÇ Æ®·¹ÀÌ¿¡ ¹èÄ¡µÇ¸ç Æ®·¹ÀÌ¿¡¼­ ÄÁÆ®·ÑÀ» ¼±ÅÃÇϸé Æû »ó´Ü¿¡ ¸Þ´º µðÀÚÀ̳ʰ¡ ¿­¸°´Ù. ¸Þ´º Ç׸ñÀ» ÆíÁýÇÏ´Â ¹æ¹ýÀº ¸ÞÀÎ ¸Þ´ºÀÇ °æ¿ì¿Í °°´Ù.

ÄÁÅؽºÆ® ¸Þ´º´Â Æò¼Ò¿¡´Â º¸ÀÌÁö ¾ÊÀ¸¸ç º°µµÀÇ ¸í·ÉÀ» ³»¸± ¶§¸¸ ³ªÅ¸³­´Ù. º¸Åë ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À» ´­·¶´Ù ³õÀ» ¶§ ³ªÅ¸³ª¹Ç·Î ÆûÀÇ MouseUp À̺¥Æ®¿¡¼­ Ãâ·ÂÇÏ¸é µÈ´Ù. ±×º¸´Ù ´õ Æí¸®ÇÑ ¹æ¹ýÀº ÆûÀ̳ª ÄÁÆ®·ÑÀÇ ContextMenuStrip ÇÁ·ÎÆÛƼ¿¡ ÀÌ ÄÁÆ®·ÑÀ» ¹Ì¸® µî·ÏÇØ ³õ´Â °ÍÀÌ´Ù.

 

ContextMenuTest

using System; ~ using System.Windows.Forms;

 

namespace ContextMenuTest {

             public partial class Form1 : Form {

                           public Form1() {

                                        InitializeComponent();

                           }

 

                           private void »¡°£»öToolStripMenuItem_Click(object sender, EventArgs e) {

                                        BackColor = Color.Red;

                           }

 

                           private void ÆĶõ»öToolStripMenuItem_Click(object sender, EventArgs e) {

                                        BackColor = Color.Blue;

                           }

 

                           private void ÃÊ·Ï»öToolStripMenuItem_Click(object sender, EventArgs e) {

                                        BackColor = Color.Green;

                           }

 

                           private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) {

                                        »¡°£»öToolStripMenuItem.Checked = (BackColor == Color.Red);

                                        ÆĶõ»öToolStripMenuItem.Checked = (BackColor == Color.Blue);

                                        ÃÊ·Ï»öToolStripMenuItem.Checked = (BackColor == Color.Green);

                           }

             }

}

 

ÀÌ ¿¹Á¦´Â ÄÁÅؽºÆ® ¸Þ´º¸¦ ÅëÇØ ÆûÀÇ ¹è°æ»öÀ» ¼±ÅÃÇÑ´Ù. Æû¿¡ ContextMenuStrip ÄÁÆ®·ÑÀ» ¹èÄ¡ÇÏ°í ¼¼ °¡Áö »ö»óÀÇ ¸Þ´º Ç׸ñÀ» Ãß°¡Çß´Ù. ±×¸®°í ÆûÀÇ ContextMenuStrip ÇÁ·ÎÆÛƼ¿¡¼­ ÀÌ ÄÁÆ®·ÑÀ» ÁöÁ¤ÇÑ´Ù. ÄÁÅؽºÆ® ¸Þ´º¿¡¼­ ÀڽŰú ¦ÀÌ µÇ´Â ÄÁÆ®·ÑÀ» ã°í ½ÍÀ» ¶§´Â SourceControl ÇÁ·ÎÆÛƼ¸¦ Àд´Ù.

 

Æû¿¡ º°´Ù¸¥ ÄÁÆ®·ÑÀÌ ¹èÄ¡µÇ¾î ÀÖÁö ¾Ê¾Æ ÃÖÃÊ ½ÇÇà½Ã¿¡ ºó Æû¸¸ ³ªÅ¸³ª´Âµ¥ ¿À¸¥ÂÊ ¸¶¿ì½º ¹öÆ°À» ´©¸£°Å³ª Shift + F10À» ´©¸£¸é ÄÁÅؽºÆ® ¸Þ´º°¡ ³ªÅ¸³ª¸ç ¿©±â¼­ Ç׸ñÀ» ¼±ÅÃÇϸé ÆûÀÇ ¹è°æ»öÀÌ ¹Ù²ï´Ù.

ÄÁÅؽºÆ® ¸Þ´º¿¡ ¼ÓÇÑ Ç׸ñÀº ÄÁÅؽºÆ® ¸Þ´º°¡ ¿­¸®±â Á÷ÀüÀÎ Opening À̺¥Æ®¿¡¼­ üũ »óŸ¦ ÀÏ°ýÀûÀ¸·Î °ü¸®ÇÑ´Ù. ¿¹Á¦¿¡¼­´Â ÆûÀÇ ÇöÀç ¹è°æ»ö»óÀ¸·ÎºÎÅÍ ¼±ÅÃµÈ Ç׸ñÀ» Á¶»çÇÏ¿© üũ Ç¥½Ã¸¦ ºÙ¿´´Ù.

23-2-2.¿©·¯ °³ÀÇ ÄÁÅؽºÆ® ¸Þ´º

¸ÞÀÎ ¸Þ´º´Â º¸Åë Æû´ç Çϳª¸¸ Á¸ÀçÇÏÁö¸¸ ÄÁÅؽºÆ® ¸Þ´º´Â ÇÊ¿äÇѸ¸Å­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿©·¯ °³ÀÇ ÄÁÆ®·ÑÀÌ ÇϳªÀÇ ÄÁÅؽºÆ® ¸Þ´º¸¦ °øÀ¯ÇÒ ¼ö ÀÖ°í ÇÑ °³ÀÇ ÄÁÆ®·ÑÀÌ ¿©·¯ °³ÀÇ ÄÁÅؽºÆ® ¸Þ´º¸¦ ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.  ´ÙÀ½ ¿¹Á¦´Â ÆûÀÇ ¿µ¿ªÀ» Àý¹ÝÀ¸·Î ³ª´©¾î ¸¶¿ì½º¸¦ ´©¸¥ À§Ä¡¿¡ µû¶ó ´Ù¸¥ ÄÁÅؽºÆ® ¸Þ´º¸¦ Ç¥½ÃÇÑ´Ù.

 

MultiContextTest

using System; ~ using System.Windows.Forms;

 

namespace MultiContextTest {

             public partial class Form1 : Form {

                           public Form1() {

                                        InitializeComponent();

                                        SetStyle(ControlStyles.ResizeRedraw, true);

                           }

 

                           private void Form1_Paint(object sender, PaintEventArgs e) {

                                        e.Graphics.FillRectangle(Brushes.Green, 0, 0, Width / 2, Bottom);

                                        e.Graphics.FillRectangle(Brushes.Blue, Width / 2, 0, Right, Bottom);

                           }

 

                           private void Form1_MouseUp(object sender, MouseEventArgs e) {

                                        if (e.Button == MouseButtons.Right) {

                                                     Point pt = new Point(e.X, e.Y);

                                                     pt = PointToScreen(pt);

                                                     if (e.X < Width / 2) {

                                                                   contextMenuStrip1.Show(pt.X, pt.Y);

                                                     } else {

                                                                   contextMenuStrip2.Show(pt.X, pt.Y);

                                                     }

                                        }

                           }

             }

}

 

Paint À̺¥Æ®¿¡¼­ ÆûÀÇ ÆøÀ» Àý¹ÝÀ¸·Î ³ª´©¾î ¿ÞÂÊ¿¡´Â ÃÊ·Ï»öÀ¸·Î Ä¥ÇÏ°í ¿À¸¥ÂÊÀº ÆĶõ»öÀ¸·Î Ä¥ÇÑ´Ù. µÎ ¿µ¿ª¿¡¼­ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´©¸£¸é °¢°¢ ´Ù¸¥ ÄÁÅؽºÆ® ¸Þ´º°¡ ¿­¸°´Ù. ¿µ¿ª¿¡ µû¶ó ´Ù¸¥ ¸Þ´º¸¦ ¿©´Â ½Ã¹üÀ» º¸ÀÌ´Â °ÍÀÌ ÀÌ ¿¹Á¦ÀÇ ¸ñÀûÀ̹ǷΠÇڵ鷯´Â ÀÛ¼ºÇÏÁö ¾Ê¾Ò´Ù.

 

¸¶¿ì½º ¹öÆ°À» ´­·¶´Ù°¡ ³õÀ» ¶§ ¸Þ´º¸¦ ¿­¾î¾ß ÇϹǷΠMouseUp À̺¥Æ®¿¡ ÄÁÅؽºÆ® ¸Þ´º Ãâ·Â Äڵ带 ÀÛ¼ºÇÑ´Ù. ÄÁÅؽºÆ® ¸Þ´º Ãâ·Â¿¡ MouseUp À̺¥Æ®¸¦ »ç¿ëÇÏ´Â °ÍÀº ÀûÀýÇÏÁö ¸øÇѵ¥ Å°º¸µå ´ÜÃàÅ°ÀÎ Shift+F10À¸·Îµµ ¿­ ¼ö ÀÖ¾î¾ß ÇÏ°í ±Ø´ÜÀûÀ¸·Î´Â ¸¶¿ì½º°¡ ¾ø´Â ½Ã½ºÅÛµµ °í·ÁÇØ¾ß Çϱ⠶§¹®ÀÌ´Ù.

¸¶¿ì½º À̺¥Æ®·Î Àü´ÞµÇ´Â ÁÂÇ¥´Â ÀÛ¾÷¿µ¿ª ÁÂÇ¥À̹ǷΠPointToScreen ¸Þ¼­µå·Î È­¸é ÁÂÇ¥·Î ¹Ù²Ù¾î¾ß ÇÑ´Ù. ÄÁÅؽºÆ® ¸Þ´º´Â º»ÁúÀûÀ¸·Î ÀÓÀÇÀÇ È­¸é À§Ä¡¿¡ ¿­¸± ¼ö ÀÖÀ¸¹Ç·Î È­¸é ÁÂÇ¥¸¦ »ç¿ëÇÑ´Ù. ¸Þ´º¸¦ Ç¥½ÃÇÒ ¶§´Â ´Ü¼øÈ÷ Ãâ·ÂÇÒ È­¸é ÁÂÇ¥¸¦ Àμö·Î ÇÏ¿© Show ¸Þ¼­µå¸¸ È£ÃâÇÏ¸é µÈ´Ù. »ç¿ëÀÚ°¡ ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇϰųª ¸Þ´ºÀÇ ¹Ù±ù ºÎºÐÀ» ´©¸£¸é ÀÚµ¿À¸·Î ´ÝÈù´Ù.

ÀÌ ¿¹Á¦¿¡¼­ µÎ °³ÀÇ »ç°¢ÇüÀº ÆûÀÇ ¿µ¿ªÀÌ ³ª´©¾îÁ® ÀÖÀ½À» ½Ã°¢ÀûÀ¸·Î Ç¥½ÃÇÏ´Â °Í »ÓÀ̸ç MouseUpÀº ÁÂÇ¥·ÎºÎÅÍ ¿µ¿ªÀ» ÆǺ°ÇÑ´Ù. ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼­´Â ¿µ¿ªÀÌ ´õ º¹ÀâÇÑ ÇüÅ·Π³ª´©¾îÁö¸ç ¿µ¿ªÀ» ÆǺ°ÇÏ´Â ¹æ¹ýµµ º¹ÀâÇÏ´Ù. ¿¹¸¦ µé¾î Æû¿¡ ¿©·¯ Á¾·ùÀÇ »óÁ¡ÀÌ ±×·ÁÁø »ó°¡ Áöµµ°¡ ±×·ÁÁ® ÀÖ°í »óÁ¡À» Ŭ¸¯ÇÏ¸é ±× »óÁ¡¿¡¼­ ÁÖ¹® °¡´ÉÇÑ À½½ÄÀ» Æ˾÷ ¸Þ´º·Î Ç¥½ÃÇÑ´Ù¸é ¸¶¿ì½º·Î ´©¸¥ À§Ä¡ÀÇ »óÁ¡À» Á¶»çÇØ¾ß ÇÑ´Ù.