창 또는 대화 상자를 닫는 방법(WPF .NET)
이 문서에서는 창이나 대화 상자를 닫는 다양한 방법에 대해 알아봅니다. 사용자는 비 클라이언트 영역의 다음을 포함한 요소를 사용하여 창을 닫을 수 있습니다.
- 시스템 메뉴의 닫기 항목
- ALT+F4 누르기
- 닫기 단추 누르기
- 모달 창에서 단추의 IsCancel 속성이
true
로 설정된 경우 Esc 키 누르기
창을 디자인할 때 클라이언트 영역에 창을 닫는 메커니즘을 더 많이 제공합니다. 창을 닫는 데 사용되는 일반적인 디자인 요소는 다음과 같습니다.
- 파일 메뉴의 끝내기 항목(일반적으로 주 애플리케이션 창)
- 파일 메뉴의 닫기 항목(일반적으로 보조 애플리케이션 창)
- 취소 단추(일반적으로 모달 대화 상자)
- 닫기 단추(일반적으로 모덜리스 대화 상자)
중요
창이 닫히면 동일한 개체 인스턴스를 사용하여 창을 다시 열 수 없습니다.
창 수명에 대한 자세한 내용은 WPF 창 개요: 창 수명을 참조하세요.
모달 창 닫기
ShowDialog 메서드로 열린 창을 닫을 때는 DialogResult 속성을 true
또는 false
로 설정하여 각각 "수락됨" 또는 "취소됨" 상태를 나타냅니다. DialogResult
속성이 값으로 설정되는 즉시 창이 닫힙니다. 다음 코드는 DialogResult
속성을 설정하는 방법을 보여줍니다.
private void okButton_Click(object sender, RoutedEventArgs e) =>
DialogResult = true;
private void cancelButton_Click(object sender, RoutedEventArgs e) =>
DialogResult = false;
Private Sub okButton_Click(sender As Object, e As RoutedEventArgs)
DialogResult = True
End Sub
Private Sub cancelButton_Click(sender As Object, e As RoutedEventArgs)
DialogResult = False
End Sub
Close 메서드를 호출할 수도 있습니다. Close
메서드를 사용하면 DialogResult 속성이 false
로 설정됩니다.
창이 닫히면 동일한 개체 인스턴스로 다시 열 수 없습니다. 동일한 창을 표시하려고 하면 InvalidOperationException이 throw됩니다. 대신 창의 새 인스턴스를 만들고 엽니다.
모덜리스 창 닫기
Show 메서드로 열린 창을 닫을 때는 Close 메서드를 사용합니다. 다음 코드는 모덜리스 창을 닫는 방법을 보여줍니다.
private void closeButton_Click(object sender, RoutedEventArgs e) =>
Close();
Private Sub closeButton_Click(sender As Object, e As RoutedEventArgs)
Close()
End Sub
IsCancel로 닫기
Button.IsCancel 속성을 true
로 설정하면 ESC 키를 사용하여 창을 자동으로 닫을 수 있습니다. 이것은 창이 ShowDialog 메서드로 열린 경우에만 작동합니다.
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
창 숨기기
창을 닫는 대신 Hide 메서드를 사용하여 창을 숨길 수 있습니다. 닫힌 창과 달리 숨겨진 창은 다시 열 수 있습니다. 창 개체 인스턴스를 다시 사용하려면 창을 닫지 않고 숨깁니다. 다음 코드는 창 숨기기를 보여줍니다.
private void saveButton_Click(object sender, RoutedEventArgs e) =>
Hide();
Private Sub saveButton_Click(sender As Object, e As RoutedEventArgs)
Hide()
End Sub
닫기 취소 및 숨기기
창을 닫는 대신 숨기도록 단추를 디자인한 경우에도 사용자가 이를 무시하고 창을 닫을 수 있습니다. 시스템 메뉴의 닫기 항목과 창의 비클라이언트 영역에 있는 닫기 단추는 창을 숨기는 대신 닫습니다. 창을 닫지 않고 숨기려는 경우 이 시나리오를 고려해야 합니다
주의
창이 ShowDialog를 사용하여 모달로 표시되는 경우에는 창이 숨겨질 때 DialogResult 속성이 null
로 설정됩니다. 창에 고유한 속성을 추가하여 호출 코드에 상태를 다시 전달해야 합니다.
창이 닫히면 Closing 이벤트가 발생합니다. 처리기는 Cancel 속성을 구현하는 CancelEventArgs를 전달합니다. 창이 닫히지 않도록 하려면 해당 속성을 true
로 설정합니다. 다음 코드는 닫기를 취소하고 대신 창을 숨기는 방법을 보여줍니다.
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
// Cancel the closure
e.Cancel = true;
// Hide the window
Hide();
}
Private Sub Window_Closing(sender As Object, e As ComponentModel.CancelEventArgs)
' Cancel the closure
e.Cancel = True
' Hide the window
Hide()
End Sub
창을 숨기고 싶지 않지만 실제로 사용자가 창을 닫지 못하게 하는 경우가 있을 수 있습니다. 자세한 내용은 WPF 창 개요: 창 닫기 취소를 참조하세요.
참고 항목
.NET Desktop feedback