No artigo de hoje vou mostrar como usar a instrução RaiseEvent na linguagem VB .NET. |
A instrução RaiseEvent dispara um evento declarado no nível de módulo dentro uma classe, formulário ou documento.
Sintaxe :
RaiseEvent
eventname[( argumentlist
)]
|
Vejamos um exemplo prático que ilustra esses conceitos.
O exemplo que irei mostrar usa os eventos para realizar uma contagem regressiva de 10 até zero. O código ilustra vários eventos relacionados a eventos, propriedades e instruções, incluindo a instrução RaiseEvent . Vamos usar uma classe Cronometro para gerar o evento.
A classe que gera um evento é a origem do evento, e os métodos que processam o evento são os manipuladores de eventos. Uma fonte de eventos pode ter vários manipuladores para eventos que ela gera.
Quando a classe gera o evento, esse evento é gerado em cada classe que decidiu manipular eventos para essa instância do objeto.
Recursos usados:
Nota: Baixe e use a versão Community 2015 do VS ela é grátis e é equivalente a versão Professional.
Criando a solução no VS 2015
Abra o VS 2015 Community e clique em New Project;
Selecione a linguagem Visual Basic e o template Windows Forms Application e informe o nome : VBNET_RaiseEvent;
A seguir no formulário padrão form1.vb inclua os seguintes controles a partir da ToolBox:
Disponha os controles no formulário conforme a figura abaixo:
A seguir, após a declaração do formulário declare o objeto mTexto com o evento Cronometro.
Private
WithEvents mTexto As CronometroA instrução WithEvents e a cláusula Handles fornecem uma maneira declarativa de especificar os manipuladores de eventos.
Um evento gerado por um objeto declarado com a palavra-chave WithEvents pode ser tratado por qualquer procedimento com uma instrução Handles para esse evento.
No evento Load do formulario - form1 - inclua o código abaixo:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Button1.Text = "Iniciar !"
mTexto = New Cronometro
End Sub
|
O código acima simplesmente atribui o texto Iniciar á propriedade Text do controle Button e cria uma instância da classe Cronometro atribuindo-a à variável mTexto.
O código da classe Cronometro é visto a seguir :
Class Cronometro
Public Event AtualizaTempo(ByVal contador As Double)
Public Event Terminado()
Public Sub IniciarContagem(ByVal Duracao As Double, ByVal Incremento As Double)
Dim Inicio As Double = DateAndTime.Timer
Dim TempoDecorrido As Double = 0
Dim AteAgora As Double = 0
Do While TempoDecorrido < Duracao
If TempoDecorrido > AteAgora + Incremento Then
AteAgora += Incremento
RaiseEvent AtualizaTempo(Duracao - AteAgora)
End If
TempoDecorrido = DateAndTime.Timer - Inicio
Loop
RaiseEvent Terminado()
End Sub
|
Esta classe declara dois eventos : AtualizaTempo() e Terminado() que serão disparados pela instrução RaiseEvent.
A seguir inclua o código abaixo no evento Click do controle Button1 :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
mTexto.IniciarContagem(10.0, 0.1)
End Sub
|
Quando o usuário clicar no botão o método IniciarContagem() da classe Cronometro será invocado.
A seguir vamos declarar dois métodos associados com os eventos Terminado e AtualizaTempo definidos na classe Cronometro.
Quando esses eventos forem disparados pela instrução RaiseEvent eles serão tratados pelo código a seguir:
Private Sub mTexto_ChangeText() Handles mTexto.Terminado
TextBox1.Text = "Concluído !"
End Sub
Private Sub mTexto_AtualizaTempo(ByVal contador As Double) Handles mTexto.AtualizaTempo
TextBox1.Text = Format(contador, "##0.0")
' Use DoEvents para permitir a exibição do refresh.
My.Application.DoEvents()
End Sub
|
Executando o projeto e clicando no botão de comando iremos obter:
Inicialmente o cronômetro é iniciado e o evento AtualizaTempo() disparado, atualizando o TextBox com os valores; ao final o evento Terminado() é disparado.
Pegue o projeto completo aqui : VBNET_RaiseEvent.zip
Porque há um só
Deus, e um só Mediador entre Deus e os homens, Jesus Cristo homem.
1 Timóteo 2:5
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 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
https://msdn.microsoft.com/en-us/library/system.management%28v=vs.110%29.aspx