VB .NET - Fechando o formulário da sua aplicação


 

Já nos tempos do VB6 podíamos saber porque o usuário estava fechando o formulário da aplicação. Bastava usar o evento QueryUnload.

Recordando as constantes usadas no  QueryUnload:
Constante
Valor
Descrição
vbFormCode
1
O método Unload foi invocado no código
vbAppWindows
2
A sessão atual do Windows foi encerrada.
vbFormMDIForm
4
O formulário MDI filho esta sendo fechado porque o formulário MDI foi fechado.
vbFormControlMenu
0
O usuário usou o comando Close menu de comandos no formulário.
vbAppTaskManager
3
A janela da tarefas do windows esta fechando a aplicação.

Na nova versão do VB.NET , o VB 2005, podemos usar o evento FormClosing e a propriedade CloseReason para fazer a mesma coisa.

A propriedade CloseReason retorna vários valores conforme o motivo pelo qual o formulário esta sendo fechado como fazia o VB6 com o QueryUnload.

Vejamos então quais os valores da enumeração CloseReason :
Enumeração Descrição do motivo do fechamento do formulário para cada valor
ApplicationExitCall O fechamento esta sendo feito via chamada a Application.Exit()
MdiFormClosing O formulário MDI do formulário esta sendo fechado
None causas desconhecidas
FormOwnerClosing O formulário proprietário esta sendo fechado
TaskManagerClosing O administrador de tarefas do Windows esta fechando o formulário
UserClosing O fechamento esta sendo feito via Close ou clicando no X do menu de controle
WindowsShutDown O Windows esta sendo encerrado

Nota:

Apenas para recordar: O evento Closing ocorre quando o formulário esta sendo fechado. Quando isto ocorre todos os recursos criados com o objeto são liberados e o formulário é liberado. Se cancelarmos este evento o formulário permanece aberto. Desta forma para cancelar o fechamento de um formulário no VB.NET definimos a propriedade Cancel do evento CancelEventArgs passado para o tratador de eventos como igual a True.

Lembrando também que os eventos Form.Closed e Form.Closing não são disparados quando o método Application.Exit é chamado para encerrar a aplicação.

Abaixo o código para VB 2005 :

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Close()
    End Sub
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Application.Exit()
    End Sub
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        MessageBox.Show(e.CloseReason.ToString)
        Select Case e.CloseReason
            Case CloseReason.ApplicationExitCall
            Case CloseReason.FormOwnerClosing
            Case CloseReason.MdiFormClosing
            Case CloseReason.None
            Case CloseReason.TaskManagerClosing
            Case CloseReason.UserClosing
            Case CloseReason.WindowsShutDown
        End Select
    End Sub
End Class

 

 

Até mais ver...
 

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?


             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti