창 또는 대화 상자를 닫는 방법(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 창 개요: 창 닫기 취소를 참조하세요.

참고 항목