폼(Form)?
옆의 솔루션 탐색기의 목록을 보면 Form1.cs 클래스 아래에 Designer와 Form1 총 2개의 클래스가 있는걸 볼 수 있다.
이는 코딩의 편의를 위해 Form1클래스를 partial을 이용해 부분클래스로 나눴기 때문인데 둘 중 개발자가 주로 다루게 될 부분은 Form1의 내용이다. Designer에는 폼의 디자인 및 속성과 관련한 코드가 들어가는데 이 코드는 개발자가 직접 추가할 수도 있지만 도구상자나 속성창을 이용해 변경하는 값들이 자동으로 추가되기 때문에 미세한 조정 이외에는 굳이 손댈일이 적기 때문이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | namespace WindowsFormsApplication17 { partial class Form1 { /// <summary> /// 필수 디자이너 변수입니다. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 사용 중인 모든 리소스를 정리합니다. /// </summary> /// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form 디자이너에서 생성한 코드 /// <summary> /// 디자이너 지원에 필요한 메서드입니다. /// 이 메서드의 내용을 코드 편집기로 수정하지 마십시오. /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Text = "Form1"; } #endregion } } | cs |
<기본적으로 만들어지는 Designer의 내용>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication17 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } } | cs |
<기본적으로 만들어지는 Form1의 내용>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; namespace WindowsFormsApplication17 { static class Program { /// <summary> /// 해당 응용 프로그램의 주 진입점입니다. /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } } } | cs |
<기본적으로 만들어지는 Program.cs의 내용>
위 3개가 각 클래스 3개에 자동으로 생성되는 코드다.
코드를 보면 Program.cs에 응용 프로그램의 시작점인 Main메소드가 있다. Application 클래스의 Run메소드에 윈도우 폼 클래스의 인스턴스를 매개변수로 넘겨주어 호출하면 Main스레드에서 윈도우 메시지 루프를 시작하고 지정된 폼을 보여주게 된다.
Form1클래스 안에 public Form1(){}은 생성자의 역할을 한다. 클래스가 생성될 때 자동으로 실행되는 부분인데 안에 보면 InitializeComponent();가 추가되어 있다. 이는 Designer 클래스에서 찾아볼 수 있는데 폼의 디자인이나 컨트롤 정의들이 모두 이 안에 정의되어 생성된다. 말하자면 폼의 디자인, 컨트롤 등을 초기화 해주는 작업이라 볼 수 있다.
폼의 디자인은 도구상자에 등록되어 있는 각 객체(도구들은 모두 클래스로 만들어져 있다.)들을 드래그 앤 드롭으로 쉽게 디자인 할 수 있게 만들어져 있지만 좀더 세세한 내부 과정을 보고 싶으면 드래그 앤 드롭으로 만들 시 Designer 클래스에 자동으로 추가되는 내용들의 변화를 살펴보며 해보면 도움이 될 듯 하다.
<오른쪽 Form1.cs[디자인]의 폼을 클릭 후 도구 상자를 열면 여러 도구가 나타난다>
'IT > 윈도우 폼' 카테고리의 다른 글
[VS 2013] Timer를 이용한 실시간 시간 출력 (0) | 2018.05.17 |
---|---|
[VS 2013] DateTimePicker로 시간 선택 및 표시 (0) | 2018.05.17 |
[VS 2013] 모달과 모달리스 (0) | 2018.01.30 |
[VS 2013] 그룹박스 내의 컨트롤 접근 (0) | 2017.08.02 |
[VS 2013] 폼에서 폼으로 창 바꾸기 (0) | 2017.07.28 |