Hola chic@s,
¿Cómo consigo lanzar un evento de un control de usuario incrustado en un webform?
He probado varias cosas pero no me hace nada.
Un saludo.
| ||||
![]() Un emisor de eventos, también denominado origen de eventos (event source o event sender), es un objeto capacitado para generar y lanzar eventos al sistema, que puedan ser recuperados por otros objetos preparados para realizar su tratamiento. Para que un objeto pueda desencadenar eventos, en su clase debemos realizar dos tareas: • Declarar el propio evento usando la palabra clave Event, especificando si es necesario una lista de parámetros que acompañan al evento. • Lanzar el evento mediante la palabra clave RaiseEvent, seguida del nombre del evento a disparar. Si hemos declarado el evento con parámetros, deberemos añadir los valores para cada uno de los parámetros en el mismo orden en el que los hemos declarado. Situándonos pues ante el problema planteado por la clase Empleado en un apartado anterior, la solución que proponemos consistirá en generar desde la clase Empleado un evento cuando se produzca un fallo en la validación del sueldo. De esta manera, el código cliente que lo necesite, responderá al evento; y el que no lo precise, hará caso omiso del evento lanzado. En primer lugar, declaramos en la zona de declaraciones de la clase el evento LimiteSueldo, que irá acompañado de un parámetro que nos informará del importe erróneo que se intentaba asignar a la propiedad. A continuación, en la propiedad Sueldo, cuando detectemos que el sueldo sobrepasa el valor permitido, en lugar de lanzar allí el mensaje a la consola, generaremos el evento LimiteSueldo, que podrá ser recuperado por el código cliente que haga uso de la clase, actuando como necesite en cada ocasión. Observe el lector, que al mismo tiempo que lanzamos el evento, le pasamos el importe del sueldo que se intentaba asignar. Veamos el Código fuente 335. Cita: Código fuente 335Public Class Empleado ' declaramos el evento Public Event LimiteSueldo(ByVal ldbImporte As Double) Private msNombre As String Private mdbSueldo As Double Public Property Nombre() As String Get Return msNombre End Get Set(ByVal Value As String) msNombre = Value End Set End Property Public Property Sueldo() As Double Get Return mdbSueldo End Get Set(ByVal Value As Double) ' si el valor que intentamos asignar ' al sueldo supera el permitido... If Value > 1000 Then ' ...lanzamos el evento, y le pasamos ' como parámetro informativo el valor ' incorrecto que intentábamos asignar RaiseEvent LimiteSueldo(Value) Else mdbSueldo = Value End If End Set End Property End Class Con estas modificaciones sobre la clase Empleado, ya tenemos listo nuestro emisor de eventos. Queda ahora por completar la parte que captura los eventos lanzados por el emisor. El receptor de eventos Un receptor de eventos, también denominado manipulador de eventos (event receiver o event handler), es aquella parte del código cliente, que configuramos para que sea capaz de recibir los eventos generados por un objeto emisor. Para que ambos elementos, en este canal de comunicación que es la transmisión de eventos puedan operar, es necesario conectarlos. Conexión de un emisor de eventos con un manipulador de eventos Existen dos medios para comunicar un evento con un manipulador de eventos: • En tiempo de compilación, realizando un enlace estático entre la clase y el manipulador mediante las palabras clave WithEvents y Handles. Esta técnica tiene la ventaja de que permite escribir un código mucho más legible, en cuanto a la manipulación de eventos se refiere. • En tiempo de ejecución, realizando un enlace dinámico entre la clase y el manipulador mediante la palabra clave AddHandler. La ventaja en este caso, es que podemos asociar procedimientos manipuladores de evento dinámicamente durante el transcurso de la ejecución del programa. |
| |||
Perdón, Sigue sin funcionarme... A ver.... Tengo un control web de usuario y en él he definido un DropDownList. Este control web de usuario lo meto en un WebForm y deseo que cuando cambie el elemento seleccionado me salte el evento. El código es el siguiente.......................... WebControlUsuario: ...... Public Delegate Sub MyItemSelected(ByVal sender As Object, ByVal e As EventArgs) Public Event OnSelectedIndexChanged As MyItemSelected ...... Public Property ElementSelected() As String Get Return m_strElemento End Get Set(ByVal Value As String) m_strElemento = Value End Set End Property ....... Private Sub SelectItem(ByVal Sender As Object, ByVal e As EventArgs) Handles m_ddlControlExpedientes.SelectedIndexChanged m_strElemento = m_ddlControlExpedientes.SelectedValue RaiseEvent OnSelectedIndexChanged(Sender, e) End Sub ...... WebForm: ...... Protected WithEvents MainMenu1 As MainMenu ...... Protected Sub Desplegable(ByVal sender As Object, ByVal e As EventArgs) Handles MainMenu1.OnSelectedIndexChanged Me.TextBox1.Text = MainMenu1.ElementSelected End Sub ...... ¿Qué estoy haciendo mal? |
| ||||
Checa éste link... igual y te sirve. http://www.dotnetjunkies.com/Article...3FC68F8F2.dcik P.D Está en c# pero si tienes dudas para pasarlo a vb.net en las faq´s incluí una page que convierte de c# a vb.net y viceversa. ![]() Espero te sirva.. Salu2 y suerte. . . ![]()
__________________ Nadie roba nada ya que en la vida todo se paga . . . Exentrit - Soluciones SharePoint & Net |