Ler em inglês

Compartilhar via


Window.Closing Evento

Definição

Ocorre logo após Close() ser chamado e pode ser usado para cancelar o fechamento de uma janela.

C#
public event System.ComponentModel.CancelEventHandler Closing;

Tipo de evento

Exceções

Visibility é definido, ou Show(), ShowDialog() ou Close() é chamado durante o fechamento de uma janela.

Exemplos

O exemplo a seguir demonstra um Window que determina se ele precisa de intervenção do usuário para fechar.

XAML
<Window 
  x:Class="CSharp.DataWindow"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Closing="DataWindow_Closing"  
    >
  <Grid>
    <TextBox Name="documentTextBox" AcceptsReturn="True" AcceptsTab="True" TextChanged="documentTextBox_TextChanged"></TextBox>
  </Grid>
</Window>
C#
using System; // EventArgs
using System.ComponentModel; // CancelEventArgs
using System.Windows; // window

namespace CSharp
{
    public partial class DataWindow : Window
    {
        // Is data dirty
        bool isDataDirty = false;

        public DataWindow()
        {
            InitializeComponent();
        }

        void documentTextBox_TextChanged(object sender, EventArgs e)
        {
            this.isDataDirty = true;
        }

        void DataWindow_Closing(object sender, CancelEventArgs e)
        {
            MessageBox.Show("Closing called");

            // If data is dirty, notify user and ask for a response
            if (this.isDataDirty)
            {
                string msg = "Data is dirty. Close without saving?";
                MessageBoxResult result = 
                  MessageBox.Show(
                    msg, 
                    "Data App", 
                    MessageBoxButton.YesNo, 
                    MessageBoxImage.Warning);
                if (result == MessageBoxResult.No)
                {
                    // If user doesn't want to close, cancel closure
                    e.Cancel = true;
                }
            }
        }
    }
}

Comentários

Closing pode ser manipulado para detectar quando uma janela está sendo fechada (por exemplo, quando Close é chamada). Além disso, Closing pode ser usado para impedir o fechamento de uma janela. Para impedir que uma janela seja fechada, você pode definir a Cancel propriedade do CancelEventArgs argumento como true.

O Closing evento é acionado quando Close é chamado, se o botão Fechar de uma janela for clicado ou se o usuário pressionar ALT+F4.

Se uma janela de propriedade tiver sido aberta pela janela do proprietário usando Showe a janela do proprietário for fechada, o evento da janela de Closing propriedade não será acionado. Se o proprietário de uma janela estiver fechado (consulte Owner), Closing não será gerado na janela de propriedade.

Se Shutdown for chamado, o Closing evento para cada janela será gerado. No entanto, se Closing for cancelado, o cancelamento será ignorado.

Se uma sessão terminar porque um usuário faz logoff ou desliga, Closing não é gerado; manipule SessionEnding para implementar o código que cancela o fechamento do aplicativo.

Se você quiser mostrar e ocultar uma janela várias vezes durante o tempo de vida de um aplicativo e não quiser reinstalar a janela sempre que for exibida, poderá manipular o Closing evento, cancelá-lo e chamar o Hide método . Em seguida, você pode chamar Show na mesma instância para reabri-la.

Aplica-se a

Produto Versões
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

Confira também