Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
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
Archives
Today
Total
05-16 04:51
관리 메뉴

nomad-programmer

[Programming/C#] WinForm : 시작과 종료 이벤트 본문

Programming/C#

[Programming/C#] WinForm : 시작과 종료 이벤트

scii 2020. 10. 3. 14:53

Form 및 Control 클래스는 응용 프로그램 시작 및 종료와 관련된 메소드를 제공한다.

Form의 시작

Windows Forms 응용 프로그램을 시작할 때 기본 폼의 시작 이벤트가 다음과 같은 순서로 발생한다.

WinForm의 시작

Form.Load

- Form이 로드되어 메모리에 올라올 때, 화면에 표시되기 직전에 발생.
- 프로퍼티를 변경한다거나, 리소스를 할당하는등 Form의 동작에 필요한 초기화 수행.
- Form의 생애 동안 딱 한번 발생하므로 일회적인 초기화에 적합.
- From.Load 이벤트보다 Form 클래스의 생성자가 먼저 호출 된다.

Form의 종료

Windows Forms 응용 프로그램이 닫히면 기본 폼의 종료 이벤트가 다음과 같은 순서로 발생한다.

WinForm의 종료

Form.Closing

- Form이 닫히기 직전에 발생.
- 인수로 FormClosingEventArgs 객체가 전달되는데, 이 객체의 Cancel 프로퍼티를 true로 설정하면 종료를 취소할 수 있다.
Form.Closed

- Form이 닫힐 때, 즉 생애를 마치고 파괴될 때 발생.
- Form.Load 이벤트에 반대되는 이벤트로 Form의 생애 딱 한번만 전달된다.
- Form.Load 에서 할당한 리소스를 이 이벤트에서 해제한다.
- .NET 2.0 이전에는 Closed라는 이벤트를 사용했었다. 허나 2.0 이후부터는 FormClosed로 바뀌었다.
- 별도의 인수는 전달되지 않는다.

Application 클래스의 ApplicationExit 이벤트는 기본 폼의 종료 이벤트 이후에 발생한다.
생성자와 Load 이벤트

- 호출 순서: 생성자 → Load 이벤트.
- 생성자는 언어 차원에서 컴파일러가 자동으로 호출하는 메소드.
- Load 이벤트는 라이브러리 차원에서 프레임워크에 의해 호출되는 메소드.
- 생성자는 객체를 초기화하는 시점을 제공하기 위해 호출되므로 초기화 작업만 진행해야하며 Form을 닫아 버리는 동작을 하면 안된다(예외발생).
Comments