eventos

21/06/2004 - 23:29 por Imac_Man | Informe spam
saludos

como se sobre escribe un evento en un userscontrol

gracias de antemano

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
22/06/2004 - 07:17 | Informe spam
como se sobre escribe un evento en un userscontrol

gracias de antemano



La forma mas simple es asi:

Public Event MiEvento()

Los parametros son opcionales y pueden ser los que quieras pero deberias
seguir la forma que usa el framework:

Public Event MiEvento(ByVal sender As Object, ByVal e As EventArgs)

Donde e es de tipo EventArgs (si no tienes que pasar valores al evento) o
uno derivado de este (si necesitas pasar valores al evento). Tambien puedes
usar un Delegate existente para declarar el evento en lugar de que VB cree
uno para cada evento. La ventaja de hacerlo de esta forma es que si mas de
un evento tiene la misma firma solo tendras un delegado en lugar de dos
iguales:

' El nombre de los delegados para eventos deberian terminar en EventHandler
Public Delegate Sub MiEventoEventHandler(ByVal sender As Object, ByVal e As
ExpadedChangedEventArgs)

Public Event MiEvento As MiEventoEventHandler
Public Event MiOtroEvento As MiEventoEventHandler

Luego sin importar como definas el evento, para ejecutarlo utilizas
RaiseEvent:

' EventArgs.Empty si no se le pasan valores o una instancia de la clase
derivada de este
RaiseEvent MiEvento(Me, EventArgs.Empty)

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Tristan
22/06/2004 - 12:40 | Informe spam
Solo me gustaría añadir una cosa.

Tal y como has dicho, hay dos opciones, crear los eventos
con la sintaxis compatible con vb6, o con la estandar
de .net, definiendo un delegado, que es lo que el
compilador va a hacer implícitamente al utilizar la
primera.

Pero siguiendo en la linea que has comentado, para seguir
el patrón del framework se debería definir el evento como:

Public Event MiEvento as EventHandler

En lugar de:

Public Event MiEvento(ByVal sender As Object, ByVal e As
EventArgs)

La diferencia es sutil, pero se aprecia mejor utilizando
otros lenguajes .net, como C#. En vb.net se advierte la
diferencia utilizando la sintaxis ampliada de asignación
de evento:

AddHandler o.MiEvento, New EventHandler(AddressOf
NoFunciona)
Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
22/06/2004 - 18:49 | Informe spam
Pero siguiendo en la linea que has comentado, para seguir
el patrón del framework se debería definir el evento como:

Public Event MiEvento as EventHandler

En lugar de:

Public Event MiEvento(ByVal sender As Object, ByVal e As
EventArgs)



Tienes razon. Todo gracias a que el compilador crea un nuevo delegado para
cada evento, sin importar si ya existe uno que se ajuste al los parametros
del evento.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Tristan
22/06/2004 - 19:57 | Informe spam
Completamente de acuerdo. Parece que sería una optimización lógica, y no
creo que complique excesivamente el compilador, ¿verdad?.

Aunque me da la sensación de que la sintaxis no basada en delegados, solo se
ha introducido por compatibilidad, y no me extrañaría que MS ponga poco
esfuerzo en mejorarla, pero quien sabe.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
23/06/2004 - 02:53 | Informe spam
Aunque me da la sensación de que la sintaxis no basada en delegados,
solo se ha introducido por compatibilidad, y no me extrañaría que MS
ponga poco esfuerzo en mejorarla, pero quien sabe.



¿Compatibilidad con que? Como si VB.NET fuera compatible con VB6! ;)

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida