모델 다이얼로그를 사용하는 경우, 해당 다이얼로그를 생성/호출한 곳에서는 다이얼로그가 Close 되는 시점에 반환값을 받아서 처리하면 되므로 시점이 명확한 장점이 있습니다. 그러나, 모델리스(modeless) 다이얼로그를 사용하는 경우에는 해당 다이얼로그의 이벤트나 반환값을 받아서 될 시점이 명확하지 않아서 난감할 때가 있습니다.
이러한 경우에는 다음과 같은 이벤트 핸드러 함수를 등록하여, 다이얼로그를 호출한 곳에서 해당 다이얼로그의 이벤트를 받아 처리하도록 구현할 수 있습니다.
끝.
이러한 경우에는 다음과 같은 이벤트 핸드러 함수를 등록하여, 다이얼로그를 호출한 곳에서 해당 다이얼로그의 이벤트를 받아 처리하도록 구현할 수 있습니다.
// 1. 모델리스 다이얼로그(TestDialog)에 아래의 EventHanlder 선언 public event EventHandler TestCloseHandler; // 2. 모델리스 다이얼로그(TestDialog)의 Close 버튼 이벤트 핸들러에서 1번의 Handler 호출 void closeButton_Click(object sender, RoutedEventArgs e) { if(CloseEventHandler != null) { CloseEventHandler(this, EventArgs.Empty); } } // 3. 다이얼로그 호출하는 부분에서 이벤트 처리 함수 등록 TestDialog dlg = new TestDialog(); dlg.Owner = Main; dlg.TestCloseHandler += DialogCloseHandler; dlg.Show(); // 4. 다이얼로그를 호출하는 부분에서 이벤트 처리 함수 추가 public void DialogCloseHandler(object sender, EventArgs e) { // 원하는 close 처리 루틴 추가 }
끝.
'Programming > Code' 카테고리의 다른 글
[C#] XML XPath 대소문자 구분없이 인식하기 (0) | 2010.07.06 |
---|---|
[MFC] VS 2008에서 OnInitDialog 이벤트 함수 추가하기 (8) | 2010.05.26 |
[C#] ObservableCollection을 List로 변환하여 정렬하기 (0) | 2010.03.25 |
프로세스 비정상 종료시 처리방법 (0) | 2010.03.23 |
STL을 대체할 C# 타입 (0) | 2010.03.11 |
댓글