본문으로 바로가기
반응형

Form 클래스와 두 개의 폼 띄우기

 

 폼은 응용프로그램의 사용자 인터페이스를 구성하는 대화상자이다. 폼 클래스에는 매우 많은 속성, 메서드, 이벤트가 정의되어있다. 속성을 폼의 모양을 지정하며, 메서드는 동작을 정의하며, 이벤트는 사용자와의 상호작용을 처리한다. 폼 클래스는 윈도우 폼에서 사용되는 모든 클래스의 베이스 클래스이다. Form 클래스는 Object 클래스, MarshalByRefObject 클래스, Component 클래스, Control 클래스, ScrollableControl 클래스, ContainerControl 클래스에서 파생된 것이다.

 

 이중 Component 클래스는 윈폼 애플리케이션에서 화면을 구성하는 여러 요소들뿐 아니라 화면에 표시되지 않는 요소들도 컴포넌트 단위로 사용할 수 있게 해준다. 또 중요한 클래스가 Control 클래스인데, 컨트롤이란 사용자가 애플리케이션과 상호작용할 수 있게 하는 눈에 보이는 요소이다. Control 클래스는 윈폼 애플리케이션에서 화면에 표시되는 Button, Label 등의 컨트롤들의 베이스 클래스이다.

 

 Form 클래스에는 폼에 여러 가지 컴포넌트들을 초기화하는 InitailizeComponent() 메서드가 있다, 윈폼 애플리케이션 개발 시에 디자이너에서 컨트롤을 추가하거나 속성을 바꾸면 비쥬얼스튜디오는 InitailizeComponent() 메서드를 자동으로 수정해준다.

 

 윈폼 애플리케이션은 System.Windows.Forms.Form을 상속하는 새로운 클래스 Form1을 정의하여 만든다. 따라서 윈폼 애플리케이션의 Form1.cs 파일에는 Form1 클래스가 디폴트로 만들어진다.

 

 

 폼 클래스는 중요한 클래스인 만큼 매우 많은 속성, 메서드, 이벤트들이 정의되어있다. 

 

 

 

ClientSize가 500x500 크기인 폼의 중앙에 ClientSize가 300x200 크기의 폼을 띄워주는 프로그램을 만들어보자.

 

- Form1의 디자인 : 디자인 창에서 새로운 컨트롤을 추가할 필요는 없다. Form1의 속성창에서 StartPosition을 CenterScreen으로, Text를 "폼 클래스" 로 바꿔준다.

 

- Form2의 디자인 : 프로젝트에서 두 번째 창인 Form2를 추가한다. 솔루션 탐색기의 프로젝트 이름 위에서 마우스 오른쪽 버튼을 클릭하여 추가 -> Windows Form을 선택한다. 그림같은 창이 나오면 Form의 이름을 정해주고 저장한다.

이미 두번째 폼이 생성된것같지만 넘어가도록하자

새로 생성한 Form2의 속성창에서 StartPosition을 CenterParent로, Text를 "두번째 폼"으로 바꿔준다.

// Form1
using System.Drawing;
using System.Windows.Forms;

namespace _20200819_001
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            this.ClientSize = new Size(500, 500);

            Form f2 = new Form2();
            this.AddOwnedForm(f2);

            f2.Show();
        }
    }
}
//Form2
using System;
using System.Drawing;
using System.Windows.Forms;

namespace _20200819_001
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            this.ClientSize = new Size(300, 200);
        }
        private void Form2_Load(object sender, EventArgs e)
        {
            CenterToParent();
        }
    }
}

실행화면

 

반응형