ÄÁÅؽºÆ® ¸Þ´º´Â ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´©¸£¸é ³ªÅ¸³ª´Â ¸Þ´ºÀÌ´Ù. Æ˾÷
¸Þ´º, ·ÎÄà ¸Þ´º, ¼îÆ®ÄÆ ¸Þ´º, ¹Ù·Î °¡±â ¸Þ´º µîµîÀÇ ´Ù¾çÇÑ À̸§À¸·Î ºÒ¸®´Âµ¥ ´å³Ý¿¡¼´Â °ø½ÄÀûÀ¸·Î ÄÁÅؽºÆ® ¸Þ´º¶ó°í ºÎ¸¥´Ù. Æò¼Ò¿¡´Â º¸ÀÌÁö ¾Ê¾Æ ÀÚ¸®¸¦ Â÷ÁöÇÏÁö ¾ÊÀ¸¸ç ´©¸¥ À§Ä¡¿¡ ¿·Á ¼±ÅÃÇϱ⵵ Æí¸®ÇÏ´Ù. ÇöÀç »óȲ¿¡ ²À ÇÊ¿äÇÑ ¸í·É¸¸ ¼±º°ÀûÀ¸·Î ³ªÅ¸³ª¹Ç·Î ¿øÇÏ´Â ¸í·ÉÀ» ã±âµµ ½±´Ù.
¿©·¯ °¡Áö ÀåÁ¡ÀÌ ÀÖ¾î ÀÏ»óÀûÀ¸·Î ³Î¸® È°¿ëµÈ´Ù. ¿î¿µÃ¼Á¦µµ ¹ÙÅÁȸéÀ̳ª
ÀÛ¾÷ Ç¥½ÃÁÙ µî ´ëºÎºÐÀÇ Ç׸ñ¿¡ ÄÁÅؽºÆ® ¸Þ´º¸¦ Á¦°øÇϸç È¸é °¢ ºÎºÐ¿¡ ÄÁÅؽºÆ® ¸Þ´º¸¦ ¿©±âÀú±â ¼û°Ü ³õ¾Ò´Ù.
ºñÁÖ¾ó ½ºÆ©µð¿Àµµ ¼Ò½º ÆíÁýâÀ̳ª µðÀÚÀÎâ ½ÉÁö¾î Åø¹Ù±îÁöµµ ¸¶¿ì½º ¿À¸¥ÂÊ ¹öÆ°À» ´·¯ º¸¸é ÄÁÅؽºÆ® ¸Þ´º°¡ ºÒ¾¦ ºÒ¾¦ ³ªÅ¸³´Ù. ÄÁÅؽºÆ® ¸Þ´º°¡ ¾ø´Â °÷À» ã±â°¡ ¿ÀÈ÷·Á ´õ Èûµé Áö°æÀÌ´Ù.
ÄÁÅؽºÆ® ¸Þ´º´Â 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 À̺¥Æ®¿¡¼
üũ »óŸ¦ ÀÏ°ýÀûÀ¸·Î °ü¸®ÇÑ´Ù. ¿¹Á¦¿¡¼´Â ÆûÀÇ ÇöÀç ¹è°æ»ö»óÀ¸·ÎºÎÅÍ ¼±ÅÃµÈ Ç׸ñÀ» Á¶»çÇÏ¿© üũ
Ç¥½Ã¸¦ ºÙ¿´´Ù.
¸ÞÀÎ ¸Þ´º´Â º¸Åë Æû´ç Çϳª¸¸ Á¸ÀçÇÏÁö¸¸ ÄÁÅؽºÆ® ¸Þ´º´Â ÇÊ¿äÇѸ¸Å »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¿©·¯ °³ÀÇ ÄÁÆ®·ÑÀÌ ÇϳªÀÇ ÄÁÅؽºÆ® ¸Þ´º¸¦ °øÀ¯ÇÒ ¼ö ÀÖ°í ÇÑ °³ÀÇ ÄÁÆ®·ÑÀÌ ¿©·¯ °³ÀÇ ÄÁÅؽºÆ® ¸Þ´º¸¦ ¼±ÅÃÀûÀ¸·Î
»ç¿ëÇÒ ¼öµµ ÀÖ´Ù. ´ÙÀ½
¿¹Á¦´Â ÆûÀÇ ¿µ¿ªÀ» Àý¹ÝÀ¸·Î ³ª´©¾î ¸¶¿ì½º¸¦ ´©¸¥ À§Ä¡¿¡ µû¶ó ´Ù¸¥ ÄÁÅؽºÆ® ¸Þ´º¸¦ Ç¥½ÃÇÑ´Ù.
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Àº ÁÂÇ¥·ÎºÎÅÍ ¿µ¿ªÀ» ÆǺ°ÇÑ´Ù. ½ÇÁ¦ ÇÁ·ÎÁ§Æ®¿¡¼´Â ¿µ¿ªÀÌ
´õ º¹ÀâÇÑ ÇüÅ·Π³ª´©¾îÁö¸ç ¿µ¿ªÀ» ÆǺ°ÇÏ´Â ¹æ¹ýµµ º¹ÀâÇÏ´Ù. ¿¹¸¦ µé¾î Æû¿¡ ¿©·¯ Á¾·ùÀÇ »óÁ¡ÀÌ ±×·ÁÁø
»ó°¡ Áöµµ°¡ ±×·ÁÁ® ÀÖ°í »óÁ¡À» Ŭ¸¯ÇÏ¸é ±× »óÁ¡¿¡¼ ÁÖ¹® °¡´ÉÇÑ À½½ÄÀ» Æ˾÷ ¸Þ´º·Î Ç¥½ÃÇÑ´Ù¸é ¸¶¿ì½º·Î ´©¸¥ À§Ä¡ÀÇ »óÁ¡À» Á¶»çÇØ¾ß ÇÑ´Ù.