WinForm 시작과 종료 이벤트
Form 및 Control 클래스는 응용 프로그램 시작및 종료와 관련된 이벤트 집합을 노출합니다.
Form의 시작
Windows Forms 응용프로그램을 시작할 때 기본 폼의 시작 이벤트가 다음 순서로 발생 합니다.
● Form.Load
- Form이 로드되어 메모리에 올라올 때, 화면에 표시되기 직전에 발생
- 프로퍼티를 변경한다거나, 리소스를 할당하는 등 Form의 동작에 필요한 초기화 수행
- Form의 생애 동안 딱 한 번만 발생하므로 일회적인 초기화에 적합
- Form.Load 이벤트 보다 Form 클래스의 생성자가 먼저 호출 된다.
Form의 종료
응용 프로그램이 닫히면 기본 폼의 종료 이벤트가 다음 순서로 발생 합니다.
● 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 을 닫아 버리는 동작을 하면 안된다.(예외발생)
WinForm을 종료 시키는 메소드는 2가지가 있다.
Application.Exit()
Application.ExitThread()
Exit() 메서드는 해당 WinFrom의 모든 스레드를 종료 시킨다.
ExitThread() 메서드는 현재 스레드에 대한 메시지 루프만 종료 시킨다.
Exit()는 일반적으로 메시지 루프 내에서 실행되어 Run이 반환 되도록 한다.
Exit() 메서드를 호출하면 다음 이벤트가 순서대로 발생하여 WinForm을 종료 시킨다.
Application.Exit() → FormClosing → FormClosed
cf) Application 클래스
- 응용프로그램 그 자체를 나타내는 클래스
- 객체를 생성할 수 없으며, 상속에 사용할수도 없다.
- 정적 메스드의 집합
- 응용프로그램의 시작, 메시지 처리, 종료, 여러 가지 정보 조사등의 작업을 하는
정적 메서드와 프로퍼티의 집합
'C# > 컨트롤' 카테고리의 다른 글
[Form] 폼의 시스템 메뉴에 임의의 메뉴 추가하는법 (0) | 2012.01.10 |
---|---|
[Form] 서브폼을 활성화하지 않고 표시하기 (0) | 2012.01.10 |
[Radio] 라디오 버튼 포커스 (0) | 2012.01.10 |
[Form] 타이틀바 잡지않고 폼이동 (0) | 2012.01.09 |
[C#] [Textbox] 항상 위치 아래로 (0) | 2012.01.09 |
댓글