2012-11-14 4 views
0

닫는 이벤트를 처리하는 가장 좋은 방법을 이해하려고 시도합니다.vb.net에서 양식 닫기 이벤트 중 이벤트 시퀀스

닫힌 상태에서 부모에게 데이터가 반환 될 수있는 부모가있는 작업 공간이 여러 개 열려있는 경우 부모가 처리해야하는 데이터가있을 수 있으므로 닫는 것을 중지하고 컨트롤을 반환하는 가장 좋은 방법을 파악하려고합니다. 부모 작업 공간. (다른 작업 공간을 열고 기본적으로 상위 작업 영역과 모달 인 창을 가질 수 있습니다.)

예 : 주소 편집 창을 호출하는 계정 작업 영역이 있습니다. 주소 편집 도중 앱을 닫습니다 (계정 작업 공간을 호스팅하는 창에서). 작업 공간을 통해 closing 이벤트 단계가 있고 모달 창을 열면 해당 창 작업 공간에서 canclose가 실행됩니다.

canclose가 저장 및 닫기를 묻는 메시지가 표시되면 저장을 종료하거나 닫기를 취소한다고 가정 해 보겠습니다. 저장되어있는 경우 모달 작업 영역은 주소를 처리하는 계정 작업 영역으로 다시 보냅니다. 이는 일반적으로이 새로운 데이터를 계정 작업 영역과 관련하여 조사해야 할 가능성이 있기 때문에 닫기를 계속하지 못하게합니다. 계정 작업 영역에 집중하기를 원하며 false 반환을 위해 시작된 canclose를 원합니다.

이벤트로 작업 공간에 중점을두고 호출 canclose에 false를 반환해야합니까?

필자는 canclose와 같은 프로세스를 실행할 때 시퀀스가 ​​어떻게되는지 혼란스럽고 이벤트 코드가 이벤트를 요청한 코드와 관련하여 실제로 실행될 때 이벤트를 시작합니다.

답변

0

직접 메커니즘을 사용하거나 휠을 다시 발명하는 대신 먼저 FormClosing 네이티브 이벤트를 고려하십시오. 여기서 Cancel을 닫거나 사용자 정의 된 비 계단식 값에 CloseReason을 대입 할 수 있습니다. 자세한 세분화 된 작업 트리를 확인하십시오.

+0

우리는 탭 또는 창 닫기 캡처를 처리하고, ws의 플래그를 체크하여 더티인지 확인합니다. 그렇다면 ws의 datacontext 뷰 모델에서 프로세스를 호출하여 사용자에게 행동. VM은 db에 데이터를 저장하거나 데이터를 부모에게 반환 할 수 있습니다. 즉, 데이터를 닫을 수 있는지, 제대로 닫을 지 결정해야하는 이유입니다. 데이터가 계층 구조를 백업하는 경우, 반환 된 데이터를 처리하기 위해 부모 ws VM에서 프로세스를 호출하는 과정이 필요합니다. 취소를 중지하고이 반환 프로세스를 수행하고 부모에게 포커스를 반환하려는 경우 – BRisley

+0

@ BRisley : 위의 방법으로 모든 작업을 수행 할 수 있어야합니다. 현재 보험 관리 시스템의 핵심을 관리하는 프로덕션 응용 프로그램에 사용하고 있습니다. 계단식으로 저장되지 않은 변경 사항은 다른 프롬프트로 이어지고 사용자는 모든 단계에서 취소 할 수 있습니다. – Neolisk

+0

프롬프트를 어떻게 다루고 있습니까, 계단식 무언가를하라는 프롬프트를 허용 하시겠습니까? 아니면 닫기 이벤트를 취소하고 해당 작업 영역보기에 남겨두고 있습니까? – BRisley