본문 바로가기
프로그래밍/C# (WinForms)

C#, WinForms ] 폼 시작시, 종료시 이벤트 호출 순서

by eteo 2023. 5. 14.

 

 

Form 시작 이벤트 순서

 

폼이 Show() 메소드로 호출되면 다음과 같은 순서로 이벤트가 발생한다.

 

1. 폼의 생성자(Constructor)가 호출된다.

2. 폼의 Load 이벤트(이벤트 핸들러)가 발생한다.

3. 폼의 Shown 이벤트(이벤트 핸들러)가 발생한다.

 

생성자는 Form 객체를 생성할 때 호출되며, Load 이벤트는 Form이 로드될 때 발생하고, Shown 이벤트는 폼이 처음 화면에 표시될 때 발생한다.

 

폼 Load 이벤트 호출 시점에는 폼과 관련된 컨트롤들이 메모리에 로드되고 초기화되지만, 아직 폼이 화면에 보이지는 않는 상태이다. 따라서 이 때 폼의 크기나 위치를 변경하거나, 다른 컨트롤의 위치나 크기를 폼에 맞게 조정할 수 있다. 또한 Form이 화면에 나타나기 전이므로 시간이 오래 걸리는 초기화를 여기서 수행하면 프로그램 실행이 느리다는 느낌을 사용자에게 줄 수 있다.

폼 Shown 호출 시점에는 폼 관련된 컨트롤들이 초기화되어 화면에 보여진다. 이 때 보여지는 폼의 모양이나 동작을 변경할 수 있으며 시간이 걸리는 초기화 작업을 수행할 수 있다.

 

 

 

❗ 참고로 Application.Run() 메서드는 전달된 Form 객체를 인스턴스화하고 이를 처리하는 윈도우 메시지 루프를 시작한다. 이 때, 인스턴스화된 Form 객체는 Visible 속성이 true로 설정되므로, Show() 메서드를 호출하지 않아도 폼은 생성과 동시에 화면에 보이게 된다.

 

 

 

 

 

Form 종료 이벤트 순서

 

폼 종료시 다음과 같은 순서로 이벤트가 발생한다.

 

1. FormClosing : 폼이 닫히기 직전에 발생한다.

2. FormClosed : 폼이 닫힌 후에 발생한다.

 

Closing 이벤트는 폼이 닫히기 전에 발생하는데 이 이벤트는 폼이 닫히기 직전에 일부 작업을 수행하려는 경우에 사용된다. 예를 들어, 사용자가 저장하지 않은 변경 사항이 있는 경우 사용자에게 묻는 메시지 상자를 표시하는 등의 작업을 수행할 수 있다. Closing 이벤트를 취소하면 폼이 닫히지 않고 유지된다.

Closed 이벤트는 폼이 닫힌 후에 발생한다. 이 이벤트는 폼이 닫힌 후에 추가 작업을 수행하려는 경우에 사용된다. 폼이 닫혀도 이미지, 오디오 또는 비디오 자원을 해제하거나 다른 관련 자원을 정리하는 등의 작업을 수행할 수 있다.