Programming/Code
[C#] 모델리스(modeless) 다이얼로그 이벤트 처리하기
Joshua95
2010. 4. 28. 11:18
모델 다이얼로그를 사용하는 경우, 해당 다이얼로그를 생성/호출한 곳에서는 다이얼로그가 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 처리 루틴 추가 }
끝.