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 TarifaDurante 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)
- Entity Framework 4: Repositório GenéricoVisual Basic .NET
- As edições 14 da Easy .net Magazine e 88 da .net Magazine já estão disponíveis.ADO.NET
- Postando no Twiiter com .NET e Migre.meC#
- Setup ApplicationsVisual Basic .NET
- Problemas na manipulação de arquivos do MS Excel com .NETVisual Basic .NET