Desenvolvimento - Visual Basic .NET

Windows Forms 2.0 – Tratando eventos de aplicação

Durante a execução de um programa podem acontecer diversos eventos/acontecimentos que podem afetar o comportamento de uma aplicação. Eventos como: fechar o windows com o sistema aberto, a conexão de rede cair, etc...

por Alexandre Tarifa



Durante a execução de um programa podem acontecer diversos eventos/acontecimentos que podem afetar o comportamento de uma aplicação. Eventos como: fechar o windows com o sistema aberto, a conexão de rede cair, etc.

Para este cenário, a partir de agora, temos os application events, onde customizamos o tratamento de eventos de aplicação (grosso modo, comparado com o global.asax do ASP.Net).

Na prática

O funcionamento é muito simples, abra o Visual Studio 2005 (pode ser o Visual Basic ou C# Express). Clique New Project." w:st="on">em File > New Project. Selecione o template Windows Application e o nome de AppEvents.

Imagem 1 – Criação do projeto

No form1 adicione um controle StatusStrip encontrado na Toolbox na categoria Menus & ToolBars. Adicione ao StatusStrip um StatusLabel (imagem 2) e renomeie o label para lblStatus e Text mude para “Status da Rede”.

* Note que cada controle adicionado ao StatusStrip pode ser tratado como um controle adicionado no formulário, ou seja, podemos trabalhar diretamente com o controle, não dependendo do StatusStrip, o papel do StatusStrip limita-se a container.

Imagem 2 – Adicionando um label na barra de status.

No Solution Explores (Ctrl + Alt + L) dê um duplo clique em My Project , o My Project é uma outra novidade do Windows Forms 2.0, que será tratado em um próximo artigo.

Basicamente o My Project é um gerenciador da aplicação onde configuramos a aplicação propriedades como Compilação, Aplicação, Debug, Recursos e Configurações.

Na aba Application encontramos o botão View Application Events (imagem 3), dê um clique sobre o botão, que automaticamente é criada a classe MyApplication.

Imagem 3 – Botão View Application Events..

Selecione no topo da classe na ComboBox (Imagem 4) da esquerda My Application Events e na da direita NetworkAvabilityChanged.

Imagem 4 – Seleção de eventos.

É gerado automaticamente o método que faz referência ao evento NetworkAvailabilityChanged que é referente a alteração do estado da rede (ativo ou inativo).

Vamos criar nossa função que avalia se a rede está conectada ou não, adicione o código dentro da classe MyApplication.

Private Sub ChecaStatusRede()

If My.Computer.Network.IsAvailable = True Then

My.Forms.Form1.lblStatus.Text += " Conectado"

Else

My.Forms.Form1.lblStatus.Text += " Desconectado"

End If

End Sub

O código é muito simples, a função verifica o estado da rede, através da classe My, que facilita o acesso a classes do Framework, Caso retorne verdadeiro, utilizando também a classe My, que novamente facilitou o trabalho, passamos o texto específico para cada estado da rede.

Adicione a chamada desta sub nos eventos MyApplication_NetworkAvailabilityChanged e MyApplication_Startup.

O código final deve ficar da seguinte maneira:

Namespace My

" The following events are availble for MyApplication:

"

" Startup: Raised when the application starts, before the startup form is created.

" Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.

" UnhandledException: Raised if the application encounters an unhandled exception.

" StartupNextInstance: Raised when launching a single-instance application and the application is already active.

" NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.

Partial Friend Class MyApplication

Private Sub ChecaStatusRede()

If My.Computer.Network.IsAvailable = True Then

My.Forms.Form1.lblStatus.Text += " Conectado"

Else

My.Forms.Form1.lblStatus.Text += " Desconectado"

End If

End Sub

Private Sub MyApplication_NetworkAvailabilityChanged(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.Devices.NetworkAvailableEventArgs) Handles Me.NetworkAvailabilityChanged

ChecaStatusRede

End Sub

Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup

ChecaStatusRede()

End Sub

End Class

End Namespace

Execute a aplicação, se você estiver conectado na rede, aparecerá como Conectado, então tire o cabo de rede ou desconecte da rede e terá o valor do label trocado no formulário. Esse é o grande momento, onde tratamos eventos em nível de aplicação, tratando comportamentos que podem ocorrer a qualquer momento independente de qualquer ação do usuário.

Conclusão

Com o recurso de tratamento de eventos de aplicação, podemos aumentar ainda mais a confiabilidade e recursos de um sistema, no exemplo mostrado podemos, por exemplo, evitar que durante a utilização de um sistema, e a rede saia do ar, não deixar com que o usuário execute nenhuma ação que utilize os recursos da rede.

Se você tem interesse em aprender .net ou discutir .net entre no grupo de usuários Codificando.net - São Paulo.

Se tiver alguma dúvida, crítica, sugestão de artigo, fale comigo: alexandretarifa@gmail.com.

Abraços.
Alexandre Tarifa
Líder Codificando.net SP (www.codificando.net)

Alexandre Tarifa

Alexandre Tarifa - Ministra palestras e treinamentos, MVP (Most Valuable Professional), MCAD (Microsoft Certified Application Developer) e MCT (Microsoft Certified Trainer). Bacharel pela UMESP e pós-graduando pela Universidade Federal de São Carlos em Ciência da Computação. Analista de Sistemas e Líder do grupo de usuários Codificando.net São Paulo (sp.codificando.net). Escreve artigos para a revista MSDN Magazine e para os sites Linha de Código, MSDN Brasil e Enterpriseguys.
Visite o blog do autor: http://weblogs.pontonetpt.com/alexandretarifa/.