Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

윈폼개발

닷넷을 기반으로 한 윈도우 응용프로그램 개발 지식을 다룹니다. 비지니스 응용프로그램을 위한 닷넷 윈폼 응용프로그램은 아주 강력합니다

[기본] 폼(Form) 의 Size 와 ClientSize

작성자 : 박종명
최초 작성일 : 2008-06-26 (목요일)
최종 수정일 : 2008-06-26 (목요일)
조회 수 : 3835

이번 포스트에서는(Form) 의 화면에 보여지는 크기(Size) 에 관련한 내용을 간단히 다루고자 합니다

 

일반적으로 윈폼 컨트롤은 Size 라는 속성을 가지고 있는데 이 속성은 컨트롤의 넓이(Width) 와 높이(Height) 값을

가지는 구조체인 System.Drawing.Size 라는 구조체로 정의되어 있습니다

 

폼 역시 Size 속성을 가지고 있으며 폼의 전체 크기(넓이,높이) 값을 설정하거나 가져올 수 있습니다

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

(이때 this 는 현재 폼의 객체 인스턴스를 가리킵니다)

 

폼의 Size 와 관련해서 한가지 더 알아야 할 중요한 내용이 있습니다. 바로 ClientSize 라는 속성입니다

 

Size ClientSize 는 확연히 다릅니다

 

* Size

전체 폼의 크기

 

* ClientSize

폼의 클라이언트 영역의 크기

클라이언트 영역 크기란 폼에 다른 컨트롤을 배치 할 수 있는 폼 내의 영역으로써,

폼의 타이틀 바(제목 표시줄) 및 테두리 영역을 제외한 크기를 말합니다

 

아래 그림은 현재 폼의 Size ClientSize 값을 보여줍니다.

그림에서 알 수 있듯이 폼의 Size 값 보다 ClientSize 값이 작습니다.

ClientSize 는 전체 폼의 크기에서 제목표시줄과 파란색 테두리 영역을 제외한 크기이기 때문입니다

 

 

아래 그림은 폼의 Size ClientSize 를 보다 직관적으로 표현합니다

 

 

이렇듯 ClientSize 는 폼안에 다른 컨트롤을 배치 할 수 있는 (제목 표시줄과 테두리 를 제외한영역의 크기입니다

 

폼에는 FormBorderStyle 라는 속성이 있는데 이 속성을 None 로 설정하면 제목표시줄과 테두리가 사라지게 됩니다

위의 샘플을 FormBorderStyle.None 로 설정한 뒤 실행한 모습입니다

 

 

실행 결과를 보시면 Size ClientSize 값이 동일한 것을 알 수 있습니다. 폼의 FormBorderStyle 속성을 None 로 설정하여 폼의 제목표시줄과 테두리 영역을 제외하니 Size(Size/ClientSize) 의 값이 동일하게 되는 것입니다.

 

 

* 사이즈 관련 Event

1. SizeChanged 이벤트

사이즈와 관련된 대표적인 이벤트는 SizeChanged 이벤트 입니다.

이 이벤트는 Control 클래스로 부터 상속된 이벤트로써 컨트롤의 Size 값이 변경되면 발생합니다

 

2. ClientSizeChanged 이벤트

닷넷 프레임워크 2.0 부터 추가된 이벤트 입니다. ClientSize 값이 변경되면 발생합니다

 

3. Resize 이벤트

역시 Control 클래스에 정의된 이벤트로 컨트롤의 크기를 조정하면 발생합니다.
SizeChanged 와 완전히 동일한 이벤트라고 볼 수 있다

 

 

* 참고

SizeChanged Resize 이벤트는 모두 폼의 사이즈를 조정할 때 발생하는 동일한 이벤트이다

이렇게 동일한 역할의 이벤트가 다른 이름으로 중복 정의되어 있는 것은 기존의 비주얼베이직 프로그래머들에게

익숙한 Resize 이벤트를 그대로 유지하기 때문이라고 한다 

 

 

Resize 이벤트와 관련해 닷넷 프레임워크 2.0 부터 Form 클래스에 추가된 이벤트가 있는데

ResizeBegin, ReizeEnd 이벤트 입니다

이벤트 이름에서 직관적으로 알 수 있듯이 이 이벤트 들은 폼의 사이즈를 조정하는 시작시기와 조정을 완료한 시기에

발생합니다

 

* ResizeBegin, ReizeEnd 이벤트 참고 사항

 두 이벤트(ResizeBegin, ReizeEnd)는 사이즈의 조정 뿐만 아니라 폼의 제목표시줄을 마우스로 끌때에도 발생합니다

(즉 위치가 변경 될 때에도 발생합니다)

그리고 이 두 이벤트(ResizeBegin, ReizeEnd) 는 프로그래밍 방식으로 폼의 Size 를 변경하는 경우에는 발생하지 않습니다즉 사용자가 마우스로 폼의 크기를 조정할 경우에만 발생하게 됩니다

(SizeChaned,ClientChanged,Resize 이벤트는 프로그래밍방식에도 발생합니다)

 

 

이름
비밀번호
홈페이지
NC <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요