19-4-3.Å©±â º¯°æ

Å©±â°¡ º¯°æµÇ´Â °Íµµ Áß´ëÇÑ º¯È­À̸ç ÆûÀÇ ¸ð¾çÀ̳ª ¹èÄ¡ »óÅ´ ũ±â¿¡ ¿µÇâÀ» ¹Þ´Â´Ù. Å©±â°¡ º¯°æµÉ ¶§´Â ¿©·¯ °¡Áö À̺¥Æ®°¡ ¹ß»ýÇÑ´Ù. ¸ðµÎ 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 À̺¥Æ®¸¦ ¾²´Â °Íº¸´Ù °¡±ÞÀûÀ̸é ÇÁ·ÎÆÛƼ¸¦ È°¿ëÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.