Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, você aprenderá sobre as diferentes maneiras de fechar uma janela ou caixa de diálogo. Um usuário pode fechar uma janela usando os elementos na área não cliente, incluindo o seguinte:
- O item do menu SistemaFechar.
- Pressionando ALT + F4.
- Pressionando o botão Fechar .
- Pressionando ESC quando um botão tem a propriedade IsCancel definida
true
em uma janela modal.
Ao projetar uma janela, forneça mecanismos adicionais que permitam à área do cliente fechar uma janela. Alguns dos elementos de design comuns em uma janela que são usados para fechá-lo incluem o seguinte:
- Um item Exit no menu Arquivo , normalmente para as janelas principais do aplicativo.
- Um item Fechar no menu Arquivo , normalmente em uma janela de aplicativo secundária.
- Um botão Cancelar , normalmente em uma caixa de diálogo modal.
- Um botão Fechar , normalmente em uma caixa de diálogo modeless.
Importante
Depois que uma janela é fechada, a mesma instância de objeto não pode ser usada para reabrir a janela.
Para obter mais informações sobre a vida útil de uma janela, consulte Visão geral das janelas do WPF: tempo de vida da janela.
Fechar janela modal
Ao fechar uma janela aberta com o ShowDialog método, defina a DialogResult propriedade como true
false
ou para indicar um estado "aceito" ou "cancelado", respectivamente. Assim que a DialogResult
propriedade for definida como um valor, a janela será fechada. O código a seguir demonstra como definir a DialogResult
propriedade:
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
Você também pode chamar o Close método. Se o Close
método for usado, a DialogResult propriedade será definida como false
.
Depois que uma janela for fechada, ela não poderá ser reaberta com a mesma instância de objeto. Se você tentar mostrar a mesma janela, uma InvalidOperationException será lançada. Em vez disso, crie uma nova instância da janela e abra-a.
Fechar uma janela de modelagem
Ao fechar uma janela aberta com o Show método, use o Close método. O código a seguir demonstra o fechamento de uma janela de modelagem:
private void closeButton_Click(object sender, RoutedEventArgs e) =>
Close();
Private Sub closeButton_Click(sender As Object, e As RoutedEventArgs)
Close()
End Sub
Fechar com IsCancel
A Button.IsCancel propriedade pode ser definida para true
habilitar a chave ESC para fechar automaticamente a janela. Isso só funciona quando a janela é aberta com ShowDialog o método.
<Button Name="cancelButton" IsCancel="True">Cancel</Button>
Ocultar uma janela
Em vez de fechar uma janela, uma janela pode ser ocultada com o Hide método. Uma janela oculta pode ser reaberta, ao contrário de uma janela que foi fechada. Se você quiser reutilizar uma instância de objeto de janela, oculte a janela em vez de fechá-la. O código a seguir demonstra como ocultar uma janela:
private void saveButton_Click(object sender, RoutedEventArgs e) =>
Hide();
Private Sub saveButton_Click(sender As Object, e As RoutedEventArgs)
Hide()
End Sub
Cancelar fechar e ocultar
Se você tiver projetado seus botões para ocultar uma janela em vez de fechá-la, o usuário ainda poderá ignorar isso e fechar a janela. O item Fechar do menu do sistema e o botão Fechar da área não cliente da janela fecharão a janela em vez de escondê-la. Considere esse cenário quando sua intenção é ocultar uma janela em vez de fechá-la.
Cuidado
Se uma janela for mostrada de forma modal com ShowDialog, a propriedade DialogResult será definida como null
quando a janela estiver oculta. Você precisará comunicar o estado de volta ao código de chamada adicionando sua própria propriedade à janela.
Quando uma janela é fechada, o evento Closing é acionado. O manipulador é passado para um CancelEventArgs, que implementa a propriedade Cancel. Defina essa propriedade para true
impedir o fechamento de uma janela. O código a seguir demonstra como cancelar o fechamento e ocultar a janela:
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
Pode haver momentos em que você não deseja ocultar uma janela, mas, na verdade, impedir que o usuário a feche. Para obter mais informações, consulte Visão geral das janelas do WPF: cancelar o fechamento da janela.
Consulte também
.NET Desktop feedback