Академический Документы
Профессиональный Документы
Культура Документы
NET
O C# uma linguagem altamente tipificada, portanto um evento precisa passar parmetros ao mtodo de destino, e por isso, no podemos atribuir mtodos quaisquer a eventos, devemos seguir o padro. Se fosse permitido atribuirmos um mtodo diretamente a um evento, no haveria lugar para formalizar o nmero de parmetros (a assinatura do mtodo).
Programao em C#
Precisamos de um meio de descrever uma assinatura de mtodo concordante, e para isso que servem os delegates. Delegates so objetos de primeira classe, totalmente suportados pela linguagem. Um delegate um tipo de referncia usado para encapsular um mtodo como uma assinatura e um tipo de retorno especfico.
Programao em C#
Pode-se encapsular qualquer mtodo usando um delegate, mas o mtodo deve coincidir com o delegate usado. Definio do delegate:
Assinatura de um mtodo
Instncia do delegate:
Programao em C#
Assinatura com 2 parmetros, um tipo Object e um EventArgs. Por que eu preciso de uma referncia a um mtodo? Mximo de flexibilidade para implementar qualquer funcionalidade que voc quer no decorrer do processo.
Programao em C#
O EventHandler o delegate usado no .NET. Os eventos so sempre declarados deste tipo, desde que no exijam que nenhuma informao especial seja enviada ao destino.
EventHandler eh = new EventHandler(textbox1_Click);
Programao em C#
O compilador ir verificar se a assinatura do mtodo destino corresponde definio do delegate. Anexando eh ao evento Click de myTextBox.
myTextBox.Click += eh;
Programao em C#
Exerccio - Delegates
Crie um Console Application. Defina um delegate, logo aps o namespace. Crie uma outra classe chamada MyClass Criw mtodos a serem associados ao delegate, coloque-os na MyClass
Programao em C#
Exerccio - Delegates
Programao em C#
Exerccio - Delegates
Programao em C#
10
Exerccio - Delegates
Chamando os mtodos
Programao em C#
11
Exerccio - Delegates
Os eventos em C# so introduzidos junto com os delegates. Por conveno, os manipuladores de eventos do .NET Framework retornam void e recebem dois parmetros. O primeiro parmetro a fonte do evento (ou seja, o objeto que faz a publicao). O segundo parmetro um objeto derivado do EventArgs.
Programao em C#
12
Exerccio - Delegates
recomendvel que seus manipuladores de eventos sigam esse padro. O EventArgs a classe que serve de base para todos os dados de evento. A assinatura de um evento parecido com este abaixo:
public event delegateInteiro eventoInteiro;
Programao em C#
13
Exerccio - Delegates
Criar um programa que simula uma passagem de tempo. Adicione o namespace System.Threading, com ele iremos simular um intervalo de tempo e ver os dias passarem.
Programao em C#
14
Exerccio - Delegates
Programao em C#
15
Exerccio - Delegates
Programao em C#
16
Exerccio - Delegates
Programao em C#
17
Programao em C#
18
Programao em C#
19
Programao em C#
20