Post

[C#] 윈도우 애플리케이션 폼의 시작과 종료

[C#] 윈도우 애플리케이션 폼의 시작과 종료

윈도우 애플리케이션 폼의 시작과 종료, 이벤트를 알아보자!

안녕! 윈도우 Forms 애플리케이션을 만들다 보면 시작과 종료할 때마다 여러 이벤트들이 순서대로 발생하는 걸 볼 수 있어. 그런데 도대체 이게 언제 왜 일어나는 건지 궁금할 때가 있지? 오늘은 애플리케이션이 시작될 때랑 종료될 때 어떤 이벤트들이 일어나는지, 또 LoadShown, ClosingClosed 이벤트의 차이가 뭔지 간단히 정리해볼게!

애플리케이션 시작 시 이벤트 순서

애플리케이션이 딱 실행되면 주 폼(Form)에서 다음 이벤트가 발생해:

  1. Control.HandleCreated: 폼이 Windows와 통신할 핸들을 생성하는 단계야.
  2. Control.BindingContextChanged: 데이터 바인딩이 초기화되는 순간이지.
  3. Form.Load: 주 폼의 초기화 작업이 여기서 이뤄져.
  4. Control.VisibleChanged: 폼이 드디어 보이게 돼! (오, 이제 시작인가?)
  5. Form.Activated: 폼이 활성화돼서 사용자가 뭘 할 준비가 돼.
  6. Form.Shown: 폼이 화면에 뜬 직후 발생하는 이벤트야. 이제 진짜 보이는 거지!

이때 Application.Run() 메서드는 전달된 Form 객체를 인스턴스화하고, 윈도우 메시지 루프를 돌려. 루프가 돌면서 폼이 완전하게 실행되는 거야. 참고로 Visible 속성이 기본적으로 true라서 Show()를 굳이 호출 안 해도 폼이 화면에 보여.

폼 종료 시 이벤트 순서

이제 애플리케이션을 종료할 때는 다음 순서로 이벤트들이 발생해:

  1. Form.Closing: 폼이 닫히기 직전!
  2. Form.FormClosing: 사용자가 폼을 닫으려 할 때 발생해. 여기서 정말 닫을지 취소할지 결정할 수도 있어.
  3. Form.Closed: 폼이 닫히고 나서 발생하는 이벤트야.
  4. Form.FormClosed: 폼이 완전히 종료된 후 발생해.
  5. Form.Deactivate: 폼이 더 이상 활성 상태가 아니게 돼.

: Closing 이벤트는 폼 닫기 직전이라, “변경 사항을 저장하시겠습니까?” 같은 알림을 띄우기 좋아. 반면, Closed는 폼이 완전히 닫힌 후라서 자원을 해제하거나 다른 정리 작업을 할 때 쓰면 딱이야.


Form.Load vs Form.Shown

폼의 LoadShown 이벤트가 비슷해 보일 수도 있지만 차이가 있어.

  • Load: 폼이 UI로 뜨기 에 발생하는 이벤트라서, 이때 무거운 초기화 작업을 하면 폼이 천천히 뜨는 것처럼 보여. 속도가 느린 것처럼 느껴지기도 하지.

  • Shown: 폼이 화면에 나타난 직후 발생하는 이벤트야. 폼이 일단 보이고 나서 작업이 시작되니까, 초기화가 오래 걸려도 프로그램이 멈춘 것처럼 안 보여.

: 시간이 오래 걸리는 초기화 작업은 Shown에 넣어봐. 폼이 먼저 뜨고 작업이 되니까 훨씬 자연스러워 보여!

Form.Closing vs Form.Closed

ClosingClosed 이벤트도 미묘하게 다르다구!

  • Closing: 폼이 닫히기 직전에 발생해. 닫기 전에 “저장할래?” 같은 대화 상자를 띄울 때 쓰기 좋아. 이 이벤트에서 Cancel을 걸면 닫기를 취소할 수도 있어.

  • Closed: 폼이 완전히 닫힌 후 발생해. 이미 폼이 종료된 후에 자원을 해제하거나 다른 정리 작업을 하는 데 유용해.


이렇게 시작과 종료 시 일어나는 이벤트들을 잘 활용하면 사용자 입장에서 더 편리한 애플리케이션을 만들 수 있어! 특히 LoadShown의 활용만 잘해도 프로그램이 빨리 뜨는 것 같은 느낌을 줄 수 있지. 윈도우 폼 개발할 때 이벤트 하나하나 챙기는 게 귀찮아 보일 수 있지만, 막상 적용하면 사용자 경험에 차이가 나니까 잘 활용해 보자!

This post is licensed under CC BY 4.0 by the author.

Trending Tags