Å©±â°¡ º¯°æµÇ´Â °Íµµ Áß´ëÇÑ º¯ÈÀ̸ç ÆûÀÇ ¸ð¾çÀ̳ª ¹èÄ¡ »óÅ´ ũ±â¿¡ ¿µÇâÀ» ¹Þ´Â´Ù. Å©±â°¡ º¯°æµÉ ¶§´Â ¿©·¯ °¡Áö À̺¥Æ®°¡ ¹ß»ýÇÑ´Ù. ¸ðµÎ Control·ÎºÎÅÍ »ó¼Ó¹ÞÀº °ÍÀÌ¸ç ¿¡µðÆ®³ª ¸®½ºÆ® ¹Ú½º °°Àº ÄÁÆ®·Ñµµ ÀÌ À̺¥Æ®¸¦ ¹Þ´Â´Ù.
l Resize : Å©±â°¡ º¯°æµÉ ¶§, Áï Size ÇÁ·ÎÆÛƼ°¡ ¹Ù²ð ¶§¸¶´Ù ¹ß»ýÇÑ´Ù. Àμö´Â Àü´ÞµÇÁö ¾ÊÀ¸¸ç º¯°æµÈ Å©±â´Â sender Àμö¸¦ Control·Î ij½ºÆÃÇÑ ÈÄ Size ÇÁ·ÎÆÛƼ¸¦ ÅëÇØ Á¶»çÇÑ´Ù. ÄÁÆ®·ÑÀÌ ÃÖÃÊ »ý¼ºµÉ ¶§´Â ÀÌ À̺¥Æ®°¡ ¹ß»ýÇÏÁö ¾Ê´Â´Ù.
l Layout : ÆûÀÇ Å©±â, Â÷ÀϵåÀÇ À§Ä¡, Â÷Àϵ带 Ãß°¡ ¶Ç´Â Á¦°ÅÇÒ ¶§¸¶´Ù Àü´ÞµÈ´Ù. ÆûÀÇ ¹èÄ¡°¡ Á¶±ÝÀÌ¶óµµ ¹Ù²î¸é Àü´ÞµÇ¸ç ÃÖÃÊ »ý¼ºµÉ ¶§µµ ¹ß»ýÇϹǷΠ¹èÄ¡ ÃʱâÈ¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù. Àμö·Î Àü´ÞµÇ´Â LayoutEventArgs °´Ã¼¿¡´Â ¿µÇâÀ» ¹Þ´Â Â÷Àϵå¿Í ÇÁ·ÎÆÛƼ¿¡ ´ëÇÑ Á¤º¸°¡ µé¾î ÀÖ´Ù.
l SizeChanged : Resize À̺¥Æ®¿Í µ¿ÀÏÇÑ À̺¥Æ®ÀÌ´Ù. Resize´Â ÆûÀÇ Å©±â°¡ ¹Ù²î¾ú´Ù´Â ¶æÀÌ°í SizeChanged´Â Size ÇÁ·ÎÆÛƼ°¡ ¹Ù²î¾ú´Ù´Â ¶æÀε¥ ¹ß»ý ½ÃÁ¡Àº °á±¹ °°´Ù.
l ClientSizeChanged : ´å³Ý 2.0¿¡¼ Ãß°¡µÈ °ÍÀ̸ç ClientSize ÇÁ·ÎÆÛƼ°¡ º¯°æµÉ ¶§¸¶´Ù ¹ß»ýÇÑ´Ù. Resize À̺¥Æ®¿Í ¹ß»ý ½ÃÁ¡ÀÌ °ÅÀÇ °°´Ù.
ÀÛ¾÷¿µ¿ªÀÇ Å©±â¿¡ ¸Â°Ô Â÷Àϵ带 Àç¹èÄ¡Çϰųª ÅؽºÆ®¸¦ ÀçÁ¤·ÄÇÒ ¶§ ÀÌ À̺¥Æ®¸¦ »ç¿ëÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â Layout À̺¥Æ®¿¡ ´ëÇÑ Çڵ鷯¸¦ ÀÛ¼ºÇÏ¿© ÀÛ¾÷¿µ¿ªÀÇ »óÇÏÁ¿쿡 10Çȼ¿¸¸Å ¿©¹éÀ» µÎ°í Ÿ¿øÀ¸·Î °¡µæ ä¿î´Ù.
Layout |
using System; ~ using System.Windows.Forms;
namespace Layout { public partial class Form1 : Form { private string StrSize; private Rectangle Rect;
public Form1() { InitializeComponent(); }
private void Form1_Layout(object sender, LayoutEventArgs e) { Rect = ClientRectangle; Rect.Inflate(-10, -10); StrSize = string.Format("Æø = {0}, ³ôÀÌ = {1}", Rect.Width, Rect.Height); Invalidate(); }
private void Form1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawEllipse(Pens.Black, Rect); e.Graphics.DrawString(StrSize, Font, Brushes.Black, 0, 0); } } } |
ÆûÀÇ ÇöÀç Å©±â¸¦ ¹®ÀÚ¿ ÇüÅ·Π±â¾ïÇÏ´Â StrSize Çʵå¿Í Ÿ¿øÀ» ±×¸± »ç°¢¿µ¿ªÀ» ÀúÀåÇÏ´Â Rect Çʵ带 ¼±¾ðÇß´Ù. Layout À̺¥Æ®¿¡¼ Rect¸¦ ÀÛ¾÷¿µ¿ªº¸´Ù 10Çȼ¿ ´õ ÀÛÀº Å©±â·Î ¼³Á¤ÇÏ°í StrSize¿¡´Â RectÀÇ ¿µ¿ªÀ» ¹®ÀÚ¿·Î ÀÛ¼ºÇÑ´Ù. Paint À̺¥Æ®¿¡¼´Â Rect ¿µ¿ª¿¡ Ÿ¿øÀ» ±×¸®°í StrSize ¹®ÀÚ¿À» Ãâ·ÂÇÑ´Ù.
ÆûÀÇ Å©±â°¡ ¹Ù²ð ¶§¸¶´Ù Layout À̺¥Æ®°¡ ¹ß»ýÇÏ°í Rect¿Í StrSize¸¦ ´Ù½Ã °è»êÇϹǷΠŸ¿øÀº Ç×»ó ÀÛ¾÷¿µ¿ªº¸´Ù 10Çȼ¿ ÀÛ°Ô ±×·ÁÁø´Ù. Rect¿Í StrSize´Â Paint¿¡¼ Á÷Á¢ Á¶»çÇؼ »ç¿ëÇÏ´Â °Íµµ °¡´ÉÇÏÁö¸¸ ¿øÄ¢ÀûÀ¸·Î Paint´Â ±×¸®±â¸¸ ÇØ¾ß ÇÏ¸ç ±×¸®±â¿¡ ÇÊ¿äÇÑ ¸ðµç Á¤º¸´Â ¿ÜºÎ¿¡¼ ¹Ì¸® °è»êÇØ µÎ¾î¾ß ÇÑ´Ù. Paint´Â ±²ÀåÈ÷ ÀÚÁÖ ¹ß»ýÇÏ´Â À̺¥Æ®ÀÌ¸ç °¡±ÞÀû »¡¶ó¾ß ÇÏ°í ±×¸®±â ÀÌ¿ÜÀÇ µ¿ÀÛÀ» Çؼ´Â ¾ÈµÈ´Ù.
Layout À̺¥Æ® ´ë½Å Resize³ª SizeChanged À̺¥Æ®¿¡¼µµ µ¿ÀÏÇÑ Ã³¸®¸¦ ÇÒ ¼ö ÀÖÁö¸¸ ÃÖÃÊ »ý¼ºµÉ ¶§ ¹ß»ýÇÏÁö ¾Ê´Â ¹®Á¦°¡ ÀÖ´Ù. Resize·Î Äڵ带 ¿Å±â¸é ½ÇÇà Á÷ÈÄ¿¡ ¾Æ¹«°Íµµ ±×·ÁÁöÁö ¾Ê´Â´Ù. Resize À̺¥Æ®¸¦ ²À »ç¿ëÇÏ·Á¸é º°µµÀÇ ÃʱâÈ Äڵ带 ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ÀÌ¿¡ ºñÇØ Layout À̺¥Æ®´Â ÆûÀÌ »ý¼ºµÉ ¶§µµ ¹ß»ýÇϹǷΠÃʱâÈ ¹× Å©±â º¯°æ½ÃÀÇ Ã³¸®¸¦ µ¿½Ã¿¡ ¼öÇàÇÒ ¼ö ÀÖ´Ù.
Win32ÀÇ WM_SIZE ¸Þ½ÃÁö¿¡ ´ëÀÀÇÏ´Â À̺¥Æ®´Â Resize°¡ ¾Æ´Ï¶ó LayoutÀÌ´Ù. ºñÁ÷°üÀûÀÌ°í ºñ½ÁÇÑ À̺¥Æ®°¡ ¸¹¾Æ È¥¶õ½º·¯¿î ¸éµµ ÀÖ´Ù. Layout À̺¥Æ®´Â Â÷ÀϵåÀÇ Ãß°¡ ¹× Á¦°Å´Â ¹°·ÐÀÌ°í Size, Location, Anchor, Dock µîÀÇ ÇÁ·ÎÆÛƼ°¡ º¯°æµÉ ¶§µµ ¹ß»ýÇÑ´Ù. ³Ê¹« ÀÚÁÖ ¹ß»ýÇÒ ¶§´Â ´ÙÀ½ ¸Þ¼µå·Î Àá½Ã ÁßÁö ¹× Àç°³ÇÑ´Ù.
public void SuspendLayout ()
public void ResumeLayout (bool performLayout)
SuspendLayout ¸Þ¼µå´Â Layout À̺¥Æ®°¡ ¹ß»ýÇÏÁö ¾Êµµ·Ï ±ÝÁöÇÑ´Ù. ResumeLayout ¸Þ¼µå´Â ¹Ý´ë·Î Layout À̺¥Æ®°¡ ´Ù½Ã ¹ß»ýÇϵµ·Ï Çã°¡Çϴµ¥ performLayout Àμö¸¦ true·Î ÁöÁ¤ÇÏ¸é º¸·ùÁßÀÎ ·¹À̾ƿô ¿äûÀ» ´çÀå ½ÇÇàÇÑ´Ù. ÀÌ µÎ ¸Þ¼µåÀÇ »ç¿ë¿¹´Â µðÀÚÀ̳ʰ¡ ÀÛ¼ºÇÏ´Â InitializeComponent ¸Þ¼µå¿¡¼ º¼ ¼ö ÀÖ´Ù.
private void InitializeComponent() {
this.SuspendLayout();
// Â÷Àϵ带 Ãß°¡ÇÏ°í ÇÁ·ÎÆÛƼ¸¦ ÃʱâÈÇÑ´Ù.
this.ResumeLayout(false);
}
Â÷ÀϵåÀÇ ÇÁ·ÎÆÛƼ¸¦ ÃʱâÈÇÏ´Â Äڵ尡 ´ë·®À¸·Î ÀÛ¼ºµÇ´Âµ¥ ÇÁ·ÎÆÛƼ Çϳª¸¦ ¹Ù²Ü ¶§¸¶´Ù ·¹À̾ƿôÀ» ¸Å¹ø ´Ù½Ã Á¶Á¤ÇÒ ÇÊ¿ä´Â ¾ø´Ù. ¾îÂ÷ÇÇ ¾ÆÁ÷ ÆûÀÌ È¸é¿¡ º¸ÀÌ´Â »óÅ°¡ ¾Æ´Ï¹Ç·Î Ãʱâȸ¦ ÇÏ´Â µ¿¾È¿¡´Â ·¹À̾ƿôÀ» ÀÏ´Ü ÁßÁö½ÃÄÑ ³õ°í ÃʱâÈ°¡ ¿Ï·áµÈ ÀÌÈÄ¿¡ ÇѲ¨¹ø¿¡ ¹èÄ¡ÇÏ´Â °ÍÀÌ ´õ È¿À²ÀûÀÌ´Ù.
ÆûÀÇ Å©±â°¡ ¹Ù²ð ¶§ ÇؾßÇÒ °¡Àå Áß¿äÇÑ ÀÏÀº Â÷Àϵ带 Àç¹èÄ¡ÇÏ´Â °ÍÀÌ´Ù. ´å³Ý¿¡¼´Â Anchor, Dock ÇÁ·ÎÆÛƼµî Â÷Àϵ带 Àç¹èÄ¡ÇÏ´Â Æí¸®ÇÑ ¹æ¹ýÀÌ ¸¹¾Æ Layout À̺¥Æ®¸¦ ¾²´Â °Íº¸´Ù °¡±ÞÀûÀ̸é ÇÁ·ÎÆÛƼ¸¦ È°¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.