본문 바로가기
개발언어/C#

[C#] (강의) 2. Form 속성(레이아웃)

by 창용이랑 2021. 4. 12.
728x90

m.cafe.daum.net/smbitpro/R7EG/6

 

2. 폼의 속성 (레이아웃)

Form 속성 이번에는 Form의 속성에서 레이아웃 관련 속성들에 대해 살펴보기로 하자. 레이아웃 속성 속성명 형식 설명 AutoScaleMode AutoScaleMode 컨트롤의 자동 크기 조정 모드 ContainerControl에서 상속 Aut

m.cafe.daum.net

Form 속성

이번에는 Form의 속성에서 레이아웃 관련 속성들에 대해 살펴보기로 하자.

 

레이아웃 속성

속성명

형식

설명

AutoScaleMode

AutoScaleMode

컨트롤의 자동 크기 조정 모드

ContainerControl에서 상속

AutoScroll

bool

자동 스크롤 기능 사용 여부

AutoScrollMargin

Size

자동 스크롤 여백 크기

ScrollableControl에서 상속

AutoScrollMinSize

Size

자동 스크롤 최소 크기

ScrollableControl에서 상속

AutoSize

Bool

폼의 크기가 자동 조정 여부

AutoSizeMode

AutoSizeMode

폼의 크기를 무엇에 따라 자동 조정할 지 여부

Location

Point

왼쪽 위 모퉁이의 위치

MaximumSize

Size

최대화 사이즈

MinimumSize

Size

최소화 사이즈

Padding

Padding

컨트롤의 안쪽 여백

Control에서 상속

Size

Size

폼의 크기

StartPosition

StartPosition

폼의 시작 위치

WindowState

WindowState

폼의 창 상태

 

1. AutoScaleMode

이 속성은 컨트롤의 자동 크기 조정 모드에 관한 속성이다. 폼은 사용자가 사용하는 화면 해상도나 폰트 크기에 따라 크기가 결정이 되어야 접근성이 높다고 할 수 있다.

이 속성은 ContainerControl에서 상속되었다.

다음은 AutoScaleMode에 대입할 수 있는 AutoScaleMode형식 내부의 열거형 멤버 이름이다.

 

열거형 멤버 이름

설명

None

자동 크기 조정 사용 안 함

Font

글꼴 크기를 기준으로 크기 제어

Dpi

해상도를 기준으로 크기 제어

Inherit

부모 크기 조정 모드에 따라 크기 제어

이에 대한 좀 더 살펴보기로 하자.

이를 위해 폼의 AutoScaleMode Font로 지정한 후 내부의 버튼을 누르면 폰트의 크기를 변경하는 응용을 만들면 확인이 가능할 것이다.

먼저 프로젝트를 하나 생성하고 폼 내부에 버튼을 추가하고 버튼에 Click이벤트 핸들러를 추가하자.

 

 

 

버튼의 Click이벤트 핸들러에서는 한 번 누를 때마다 10=>15=>20=>25=>10=>…과 같이 폰트 크기가 변경되기 위한 코드를 작성해 보자.

(순회하기 위해 check 멤버 필드를 Form1 클래스에 선언하자.)

 

 

int check;

private void button1_Click(object sender, EventArgs e)

{

    check = (check + 1) % 4;

    switch (check)

    {

        case 1:    Font = new Font("궁서", 10); break;

        case 2:    Font = new Font("궁서", 15); break;

        case 3:    Font = new Font("궁서", 20); break;

        default:    Font = new Font("궁서", 25); break;

    }

}

실행한 후 버튼을 클릭하면 폼의 크기가 변경됨을 확인할 수 있을 것이다.

 

2. AutoScroll

이 속성은 자동 스크롤 기능 사용 여부에 관한 속성이다. 이 속성이 true로 지정이 되면 폼 내부의 자식 컨트롤 중에 폼의 클라이언트 영역을 벗어나는 경우가 있으면 자동으로 스크롤 바가 생기게 된다.

이에 대해 좀 더 살펴보기로 하자.

이를 위해 폼 내부의 버튼을 누르면 Label컨트롤이 생성하도록 하고 생성된 Label컨트롤의 위치는 이전에 생성된 Label컨트롤보다 y값을 증가한 위치에 배치를 하면 폼의 클라이언트 영역을 벗어나게 될 것이다.

앞의 예처럼 먼저 프로젝트를 하나 생성하고 폼 내부에 버튼을 추가하고 버튼에 Click이벤트 핸들러를 추가하자.

버튼의 Click이벤트 핸들러에서는 한 번 누를 때마다 Label 개체를 생성하자. 그리고, 생성된 Label컨트롤의 위치는 이전 위치보다 y값을 30 증가한 곳에 배치하도록 하자.

(이를 위해 생성된 생성된 Label 개체수를 위한 lcnt멤버 필드를 Form1 클래스에 선언하자.)

 

 

int lcnt;

private void button1_Click(object sender, EventArgs e)

{

    Label label = new Label();

    lcnt++;

    label.Text = lcnt.ToString();

    label.Location ‎=‎ new Point(10, lcnt * 30);

    this.Controls.Add(label);

}

실행한 후 버튼을 계속 누르다 보면 다음과 같이 스크롤 바가 생기는 것을 알 수 있다.

 

 

 

3. AutoScrollMargin

이 속성은 자동 스크롤 여백 크기에 관한 것이다. 이 속성은 ScrollableControl에서 상속받았다.

위에서 작성한 예제 프로그램에 여백 크기를 변경한 후에 실행하여 비교해 보면 차이를 확인할 수 있을 것이다.

아래의 왼쪽은 여백을 (0,0)을 설정한 경우이고 오른쪽은 여백을 (0,50)을 설정한 후에 Label개체를 8개를 만들었을 때의 모습이다. 스크롤 바를 확인하면 차이를 느낄 수 있을 것이다.

 

 

 

 

4. AutoScrollMinSize

이 속성은 자동 스크롤 최소 크기이다. 이 속성은 ScrollableControl에서 상속받았다.

 

5. AutoSize

이 속성은 폼의 크기가 자동 조정 여부에 관한 것이다.

 

6. AutoSizeMode

이 속성은 폼의 크기를 무엇에 따라 자동 조정할 지 여부에 관한 것이다.

이 속성은 AutoSize 속성이 true일 경우에만 유효하다.

AutoSizeMode 속성에는 AutoSizeMode 열거형에 있는 두 가지 값 중에 하나를 선택할 수 있다.

다음은 AutoSizeMode 열거형에 나열된 멤버들이다.

열거형 멤버 이름

설명

GrowAndShrink

내부 컨트롤에 따라 크기가 변경이 되며 수동으로 컨트롤의 크기를 조절할 수 없다.

GrowOnly

내부 컨트롤에 따라 크기가 확장되지만 컨트롤보다 작게축소되지는 않는다. 폼의 크기도 조절되지만 컨트롤보다 작게 축소되지 않는다.

 

이에 대해 좀 더 살펴보기로 하자.

프로젝트는 위에서 만든 것을 그대로 사용하기로 하자. 폼의 AutoScroll 속성은 false로 변경하고 AutoSize true로 한다. 코드 수정없이 먼저 AutoSizeMode GrowAndShrink로 한 후에 실행해 보라. 그리고 버튼을 누르다 보면 폼의 사이즈가 커지는 것을 알 수가 있다. 또한, 폼의 사이즈를 수동으로 변경하려고 해도 안 된다는 것을 알 수가 있을 것이다.

다시 코드 수정없이 AutoSizeMode GrowOnly로 한 후에 같은 테스트를 해 보라. 버튼을 누르다 보면 폼의 사이즈가 커지는 것은 앞과 같음을 알 수 있다. 하지만, 폼의 사이즈를 변경이 가능하다는 것을 알 수 있을 것이다. 물론, 내부 컨트롤을 포함하는 사이즈 내에서 변경이 가능하다.

 

7. Location

이 속성은 왼쪽 위 모퉁이의 위치에 관한 속성이다.

 

8. MaximumSize

이 속성은 최대화 사이즈에 관한 속성이다.

 

9. MinimumSize

이 속성은 최소화 사이즈에 관한 속성이다.

 

10. Padding

이 속성은 컨트롤의 안쪽 여백에 관한 속성이다. 이 속성은 Control에서 상속되었다.

이에 대해 좀 더 살펴보기를 원한다면 폼에 버튼을 하나 배치를 한 후 버튼의 Dock속성을 Fill로하라. 그러면 버튼이 폼의 클라이언트 영역 전체에 배치됨을 알 수 있다. 그 후 Form1 Pading 속성을 변경하면 버튼 컨트롤과 폼 사이에 안쪽 여백이 생기는 것을 알 수 있을 것이다.

 

다음은 Padding (10,20,50,100)을 주었을 때의 모습이다.

 

 

 

11. Size

이 속성은 폼의 크기에 관한 속성이다.

 

12. StartPosition

이 속성은 폼의 시작 위치에 관한 속성이다.

 

13. WindowState

이 속성은 폼의 창 상태에 관한 속성이다.

WindowState속성의 열거형의 멤버로는 Normal Minimized, Maximized가 있다.