Actualización: noviembre 2007
Representa el método que controlará un evento.
Espacio de nombres:
System
Ensamblado:
mscorlib (en mscorlib.dll)
<SerializableAttribute> _
Public Delegate Sub EventHandler(Of TEventArgs As EventArgs) ( _
sender As Object, _
e As TEventArgs _
)
Dim instance As New EventHandler(Of TEventArgs)(AddressOf HandlerMethod)
El código de ejemplo para este idioma aún no está disponible.
J# admite el uso de APIs genéricas pero no admite la declaración de nuevas API.
Parámetros de tipo
- TEventArgs
Tipo de los datos de evento generados por el evento.
El modelo de evento de .NET Framework se basa en la existencia de un delegado de eventos que conecte un evento a su controlador. Para provocar un evento, se requieren dos elementos:
El delegado es un tipo que define una firma; es decir, el tipo del valor devuelto y los tipos de la lista de parámetros de un método. Puede utilizar el tipo delegado para declarar una variable que puede hacer referencia a cualquier método con la misma firma que el delegado.
La firma estándar del delegado de un controlador de eventos define un método que no devuelve ningún valor, cuyo primer parámetro es de tipo Object y hace referencia a la instancia que provoca el evento, y cuyo segundo parámetro se deriva del tipo EventArgs y contiene los datos de eventos. Si el evento no genera datos de eventos, el segundo parámetro es tan sólo una instancia de EventArgs. De lo contrario, el segundo parámetro es un tipo personalizado derivado de EventArgs y que proporciona los campos o propiedades necesarios para contener los datos de eventos.
EventHandler<(Of <(TEventArgs>)>) es un delegado predefinido que representa un método controlador de un evento, independientemente de si el evento genera datos de eventos o no. Si el evento no genera datos de eventos, sustituya el parámetro de tipo genérico por EventArgs; en caso contrario, utilice su propio tipo de datos de eventos personalizado para sustituir el parámetro de tipo genérico.
La ventaja de utilizar EventHandler<(Of <(TEventArgs>)>) es que no necesita codificar su propio delegado personalizado si el evento genera datos de eventos. Además, .NET Framework sólo necesita una implementación para poder utilizar EventHandler<(Of <(TEventArgs>)>), independientemente del tipo de datos de eventos que utilice para sustituir el parámetro de tipo genérico.
Para asociar el evento al método que lo controlará, agregue una instancia del delegado al evento. Siempre que se produzca el evento, se llamará a su controlador, a menos que se quite el delegado.
Para obtener más información acerca de delegados del controlador de eventos, vea Eventos y delegados.
El ejemplo de código siguiente declara datos de eventos y un delegado de EventHandler<(Of <(TEventArgs>)>) genérico que utiliza estos datos y muestra cómo se provoca el evento.
' This example demonstrates the EventHandler(Of T) delegate.
Imports System
Imports System.Collections.Generic
'---------------------------------------------------------
Public Class MyEventArgs
Inherits EventArgs
Private msg As String
Public Sub New(messageData As String)
msg = messageData
End Sub 'New
Public Property Message() As String
Get
Return msg
End Get
Set
msg = value
End Set
End Property
End Class 'MyEventArgs
'---------------------------------------------------------
Public Class HasEvent
' Declare an event of delegate type EventHandler of
' MyEventArgs.
Public Event SampleEvent As EventHandler(Of MyEventArgs)
Public Sub DemoEvent(val As String)
RaiseEvent SampleEvent(Me, New MyEventArgs(val))
End Sub 'DemoEvent
End Class 'HasEvent
'---------------------------------------------------------
Public Class Sample
Public Shared Sub Main()
Dim he As New HasEvent()
AddHandler he.SampleEvent, AddressOf SampleEventHandler
he.DemoEvent("Hey there, Bruce!")
he.DemoEvent("How are you today?")
he.DemoEvent("I'm pretty good.")
he.DemoEvent("Thanks for asking!")
End Sub 'Main
Private Shared Sub SampleEventHandler(src As Object, _
mea As MyEventArgs)
Console.WriteLine(mea.Message)
End Sub 'SampleEventHandler
End Class 'Sample
'---------------------------------------------------------
'
'This example produces the following results:
'
'Hey there, Bruce!
'How are you today?
'I'm pretty good.
'Thanks for asking!
'
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360
.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
.NET Framework
Compatible con: 3.5, 3.0, 2.0
.NET Compact Framework
Compatible con: 3.5, 2.0
XNA Framework
Compatible con: 2.0, 1.0
Referencia
Otros recursos