VB .NET - Usando Delegates
O Visual Basic .NET possui um recurso chamado - Delegate - (vou traduzir : Delegado , de delegar...). Ele oferece uma nova maneira de trabalhar com funções e rotinas.
"Delegate" ou Delegado é o nome usado para descrever um procedimento em VB.NET que permite a você controlar o código que atualmente manipula um evento. (Como um evento Change , Click , Load , etc.).
Um delegate é então uma classe que pode manipular uma referência a um método.
No VB6 o procedimento Command_Click manipulava o evento Click de um botão de comando - Command. Então você colocava o código que desejava que fosse executando quando o usuário clicasse neste botão dentro do procedimento Command_Click.
No VB.NET você pode alterar o código que manipula o evento. Ao fazer isto , estamos 'delegando' o evento.
Uma classe delegada possui uma assinatura e somente será capaz de armazenar referências para procedimentos que têm a mesma assinatura (tipos de parâmetros , tipos de retorno). Isto reforça a segurança e evita que você faça uma referência a uma rotina inválida.
Antes de poder criar um Delegado você tem que criar o seu tipo em uma declaração assim :
Public Delegate Function Funcao(String as String) As String
A função acima define um tipo de delegado e como base nela o tipo de delegado Funcao pode ser usado para armazenar a localização de uma função que aceita os parâmetros e o retorno definidos.
Vou dar um exemplo simples para ficar mais claro.
Inicie um novo projeto no VB.NET e no formulário padrão insira um botão de comando - button1 - e uma label - lblIdioma -com o seguinte layout:
O código associado ao
evento Click do botão é o seguinte:
|
O código é simples: quando o usuário clicar no botão - button1 - Diga Olá ! - o evento Click será acionado e o texto - "Olá Pessoal !" será exibido no etiqueta - lblIdioma.
Vamos então entrar com a delegação , inserindo o código abaixo no evento Load do formulário :
Private
Sub Form1_Load(ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load AddHandler button1.Click, AddressOf cmdIngles RemoveHandler button1.Click, AddressOf Button1_Click End Sub |
Neste código eu estou delegando o evento do botão de comando Button1.Click para uma rotina -cmdIngles- usando o comando AddressOf (endereço de) . Agora basta criar o código para a rotina que irá ser executada:
Private
Sub cmdIngles(ByVal sender
As System.Object,
ByVal e
As System.EventArgs) lblIdioma.Text = " Hello ! Everybody. " Me.lblIdioma.Font = New System.Drawing.Font("Verdana", 16) End Sub |
Este código faz o mesmo que o código do evento Click do botão - button1 - a única diferença é que exibe a mensagem em inglês.
Se você executar o projeto, como a delegação foi colocada no evento Load do formulário , ao clicar no botão de comando a mensagem exibida será no idioma Inglês:
Então para concluir podemos dizer que um delegado é algo parecido com um ponteiro em C++.
Aguarde mais uma artigo VB.NET...
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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Realizando operações com List(of T) - Macoratti.net