[C#기초] 12. 폼과 타이머 이벤트
INDEX
폼 이벤트
폼 이벤트
-
폼 관련 기본 메시지
WM_CREATE
,WM_CLOSE
,WM_DESTROY
-
폼 관련 이벤트
Form.Load
,Form.Closing
,Form.Closed
,Form.Resize
,Form.Layout
Form.Load
- 폼이 처음으로 표시되기 전에 발생
- 용도 : 폼에서 사용하는 리소스를 할당
public event EventHandler Load
- 특징 : 한번만 호출 -> 리소스 초기화
- 생성방법
- 속성창 -> 이벤트 -> Load
- 폼 더블클릭
폼 생성과 해제 이벤트
Form.FormClosing
-
폼이 닫히기 직전에 발생
-
이벤트 관련 메시지
- WM_CLOSE
-
이벤트 사용 용도
- 폼과 관련된 모든 리소스 해제
-
폼 해제를 취소
Form1_FormCLosing(object sender, FormClosingEventArgs e) { // 폼 해제 취소 (닫히지 않음) e.Cancel = true; }
-
특징
- 닫기 버튼 클릭때마다 호출
-
Form.Closing
확인 버튼 예제 코드private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("종료하시겠습니까?", "종료", MessageBoxButtons.YesNo) == DialogResult.No) e.Cancel = true; }
Form.FormClosed
- 폼이 닫힌 후 (닫히면서) 발생
- 이벤트 관련 메시지
WM_DESTROY
,WM_QUIT
- 이벤트 사용 용도 : 메모리에 관련된 해제
- 특징 : 한 번만 호출된 후에 프로그램 완전 종료
폼 크기 변경 이벤트
간단한 폼 크기 변경 이벤트 예제 코드
private void Form1_Load(object sender, EventArgs e) { Width = 100; Height = 100; }
폼 크기 변경 관련 이벤트
-
Resize : 폼 크기 변경
-
layout : 폼 크기, 컨트롤의 위치 변경
-
- 버튼의 위치 등..
Resize
-
발생 시점
-
- 컨트롤의 크기를 변경하면 발생
-
사용 용도
-
- 일정한 크기 유지
-
Resize 코드 변경 (Form은 컨트롤의 확장)
-
- System.Object
-
System.MarshalByRefObject
-
System.ComponentModel.component
-
System.Windows.Forms.Control
-
System.Windows.Forms.ScrollableControl
-
System.Windows.Froms.ContainerControl
- System.Windows.Forms.Form
-
cast형변환 필수 (unboxing)
-
Resize 컨트롤 활용 예제 코드
private void Form1_Resize(object sender, EventArgs e) { Control ctrl = (Control)sender; ctrl.Width = 500; ctrl.Height = 500; //Width = 500; //Height = 500; }
Layout
-
발생 시점
-
- 폼이 생성되기 직전에 발생
- 폼의 크기가 변경되면 발생
- 폼의 컨트롤의 위치가 바뀌는 경우 발생
- Resize < Layout
타이머 이벤트
타이머 이벤트 제한 사항
-
1초에 100회 이하 발생
-
- 보장성 없음
타이머 이벤트 발생 순서
-
타이머 컨트롤 폼에 설정
도구사장자 -> Timer 폼에 놓기
-
타이머 컨트롤 속성 설정
Enabled -> true로 설정
interval -> 1초에 발생할 수 설정
-
Timer event에서 Tick 선택
타이머 기본 메서드
Start()
: Enabled를 true로 설정 or 속성 Enalbe true로 직접 설정Stop()
: Endalbe을 flase로 설정Dispose()
: 리소스 해제