[C#] WPF 에서 window 의 closing 과 closed 이벤트의 차이점 , (Closing, Closed Event)

Closing 과 Closed 의 차이는 무엇일까요?

의미에서 유추해볼 때는 ing 는 능동의 느낌, ed 는 수동의 느낌이 납니다.

실제로 어떤 차이가 있는지 아래의 예시를 통해 알아보겠습니다.

해당 예시는 Closing 이벤트 종료 시와 Closed 이벤트 종료 시에 해당 메시지를 출력하도록 진행하였습니다. 이번 예제에서 사용할 용어는 다음과 같습니다~

  • 창 : 윈도우, window
  • 이벤트 : event
  • 아규먼트 : 인수, argument, args
Closing No

윈도우 닫기 이벤트를 호출하여 '아니요' 를 눌러보겠습니다. (Closing No)

CancelEventArgs.Cancle = true;

'아니요' 를 누르는 경우, CancelEventArgs.Cancle = true; 를 호출하여 해당 윈도우를 닫지 않도록 해보겠습니다. 출력에 Closing 만 나타나며 창이 닫히지 않는 것을 확인할 수 있습니다.

Closing Yes

이번에는 Closing > '예' 를 선택해보겠습니다.

Closing, Closed

윈도우가 닫히며 Closing 과 Closed 이벤트가 발생합니다.

Closing 아규먼트는 CancelEventArgs이며 해당 이벤트는 Cancel이 가능합니다.

그에 반해 Closed 파라미터는 EventArgs 이며 Cancel 기능이 없습니다.

Closed 에서 ((System.ComponentModel.CancelEventArgs)e).Cancel = true; 와 같이 시도하면 실행되지 않습니다.

System.InvalidCastException

System.InvalidCastException: ''System.EventArgs' 형식 개체를 'System.ComponentModel.CancelEventArgs' 형식으로 캐스팅할 수 없습니다.'

다른 이벤트도 closing과 closed처럼 이벤트가 있답니다. ing와 ed는 이러한 성격이 많으니 참고하면 좋습니다.

댓글