1,2 회 이벤트에 대해 잘 알아 보셨는지요. 이번 3회차 에서는 1,2회차에 비해 난이도가 월등히 높아지게 됩니다. 반드시 이벤트를 정복하고자 한다면 1,2 회차를 직접 코드로 작성해 보며 이벤트에 대한 감각을 익히세요.
 
취소 가능한 이벤트
아마도 윈폼을 조금이라도 해 보신 분이라면, FormClosing/FormClosed 이벤트를 보신적이 있을 것입니다. 이 이벤트 중 FormClosing 은 폼이 닫히기 전에 발생하는 이벤트로 FormClosed 이벤트가 발생하는 것을 방지할 수 도 있답니다. 바로 이것이 취소 가능한 이벤트 입니다.(제가 붙혀서 부르는 것임 +_+)
 
아래의 간략한 윈폼 소스를 보면 알 수 있을 것입니다.
 
[그림1] FormClosing/FormClosed 예제
 
FormClosing 과 FormClosed 는 폼이 닫힐 때 차례로 발생하는 것을 알 수 있습니다.
 
[그림2] FormClosing/FormClosed 이벤트
 
하지만, 만약 CancelEventArgs 에서 제공하는 Cancel 프로퍼티를 True 로 설정할 경우 FormClosing 이후 FormClosed 이벤트를 실행되지 않습니다.
 
[그림3] CancelEventArgs 의 Cancel 프로퍼티를 True 로 설정한 경우
 
위와 같이 Cancel 프로퍼티를 True 로 설정한 경우 더 이상 FormClosed 이벤트는 발생하지 않게 되며, 폼 또한 종료하게 되지 않습니다.
 
[그림4] FormClosed 가 발생하지 않는 예제
 
이렇게 특정 이벤트가 발생하기 위해 Before/After(전후) 의 처리가 필요한 이벤트의 경우 After 이벤트를 발생하지 않도록 함으로써 Before 이벤트의 활용도가 많아진다.
 
이러한 Before 이벤트는 여러 가지 용도로 사용할 수 있습니다.
l 하나의 이벤트 구현에 들어갈 내용을 Before/After 단계로 구분하여 작성할 수 있습니다.
l Before 이벤트에서 유효성 검사를 실시하여, 이벤트의 진행/취소 유무를 결정할 수 있습니다.
 
대략 위 두 가지 정도가 가장 많이 활용될 수 있을 것 같습니다.
 
실제로 여러 상용 컨트롤에서는 위와 같은 Before/After 와 같은 굉장히 방대한 이벤트를 제공해 줍니다. 하나의 이벤트로 처리될 것이 두 개의 Before/After 이벤트로 제어할 수 있게 되면 보다 직관적이고 구현을 분리하여 작성하는데 도움이 됩니다.
 
다음 회차에 이러한 취소 가능한 이벤트를 만들어 보도록 하겠습니다.
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by 땡초 POWERUMC
TAG ,

댓글을 달아 주세요