GENERACION EVENTOS

20/07/2004 - 18:55 por CLAUDIA | Informe spam
Como genero eventos dinamicos en tiempo de ejecución?

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
20/07/2004 - 20:48 | Informe spam
Como genero eventos dinamicos en tiempo de ejecución?



¿Podrias ser mas especifica? ¿Te refieres a generar eventos desde una clase
o control o capturarlos?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 José Antonio
21/07/2004 - 00:57 | Informe spam
Yo supongo que te refieres a capturarlos y creo que te debías mirar en la
ayuda la función addhandler adress off o algo así.

José Antonio


"Eduardo A. Morcillo [MS MVP VB]" <emorcilloATmvps.org> escribió en el
mensaje news:
> Como genero eventos dinamicos en tiempo de ejecución?

¿Podrias ser mas especifica? ¿Te refieres a generar eventos desde una


clase
o control o capturarlos?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


Respuesta Responder a este mensaje
#3 Sergiou
21/07/2004 - 09:49 | Informe spam
Si lo que a lo que te refieres es a cómo puedes hacer que una clase
genere un evento y en otra poder capturarlo sería así:

En la clase que quieres que "genere" el evento tendrías que declarar el
evento en si por ejemplo "Public Event FinTransaccion(Sender as Object,E
as TransaccionEventArgs)", ahora bien suponiendo que este evento será
lanzado cuando termine un procedimiento que hace una transacción, el
código quedaría así RaiseEvent FinTransaccion(Me,new
TransaccionEventArgs(x,y))". Si en otra clase tenemos una variable de el
tipo de la anterior declarada con withevents por ejemplo "dim withevents
Transac as new Transaccion()" podremos tener código en el procedimiento
Transac_FinTransaccion(Sender as Object,E as TransaccionEventArgs)
Handles Transact.FinTransaccion.

Espero que con esto puedas solventar tu problema. Saludos.

CLAUDIA wrote:
Como genero eventos dinamicos en tiempo de ejecución?
Respuesta Responder a este mensaje
#4 Claudia
21/07/2004 - 16:52 | Informe spam
Cuando creo controles dinamicos, como es que creo sus
eventos?. Se supone que son dinamicos tambien.
Cada control tiene un comportamiento diferente, pero
tienen que ser creados dinamicamente de acuerdo a
especificaciones que le doy en la base de datos, entonces
de acuerdo a esas especificaciones creo un evento
dinamicamente, cuando creo el control dinamicamente. ¿Cómo
lo hago?

Gracias :)

Como genero eventos dinamicos en tiempo de ejecución?



¿Podrias ser mas especifica? ¿Te refieres a generar


eventos desde una clase
o control o capturarlos?

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo


.

Respuesta Responder a este mensaje
#5 Eduardo A. Morcillo [MS MVP VB]
21/07/2004 - 17:50 | Informe spam
Utiliza AddHandler para asociar un metodo con el evento del control. Por
ejemplo:

Private Sub ClickBoton( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs)

MessageBox.Show("Click")

End Sub

Private Sub CrearControl()

Dim boton As New Button

With boton
.Text = "Prueba"
.Name = "boton"
.Location = New Point(20, 20)
End With

AddHandler boton.Click, AddressOf ClickBoton

Me.Controls.Add(boton)

End Sub

Si el codigo del evento tambien lo tienes en la base de datos puedes
compilar el codigo en tiempo de ejecucion para generar un delegado y luego
usar AddHandler para asociarlo con el evento del control. Por ejemplo:

Private Sub CrearControl()

Dim codigo As String = _
"Shared Sub ClickBoton(" & _
"ByVal sender As System.Object, " & _
"ByVal e As System.EventArgs) " & vbCrLf & _
"MessageBox.Show(""Click"")" & vbCrLf & _
"End Sub"
Dim boton As New Button

With boton
.Text = "Prueba"
.Name = "boton"
.Location = New Point(20, 20)
End With

AddHandler boton.Click, _
CType(CrearEventHandler(codigo, "ClickBoton",
GetType(EventHandler)), EventHandler)

Me.Controls.Add(boton)

End Sub

Private Function CrearEventHandler( _
ByVal fuentes As String, _
ByVal metodo As String, _
ByVal tipoDelegado As Type) As [Delegate]

Dim provider As New Microsoft.VisualBasic.VBCodeProvider
Dim compiler As System.CodeDom.compiler.ICodeCompiler provider.CreateCompiler
Dim options As New System.CodeDom.Compiler.CompilerParameters
Dim result As System.CodeDom.Compiler.CompilerResults

options.GenerateInMemory = True
options.ReferencedAssemblies.Add("System.Windows.Forms.dll")

fuentes = "Imports System" & vbCrLf & _
"Imports System.Windows.Forms" & vbCrLf & _
"Namespace Eventos" & vbCrLf & _
"Class Eventos" & vbCrLf & _
fuentes & vbCrLf & _
"End Class" & vbCrLf & _
"End Namespace"

result = compiler.CompileAssemblyFromSource(options, fuentes)

If result.Errors.Count = 0 Then

Dim asm As System.Reflection.Assembly
Dim t As Type

asm = result.CompiledAssembly
t = asm.GetType("Eventos.Eventos")

Return [Delegate].CreateDelegate(tipoDelegado, t.GetMethod(metodo))

Else

Throw New Exception(result.Errors.Item(0).ToString)

End If

End Function

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