Conversion de tipo

08/11/2004 - 14:09 por JoseM | Informe spam
Saludos a todos,
Tengo una duda problema que crei funcionaria. Hice una
funcion que recibe una variable por referencia:obj de tipo
control, y un entero que me indica el tipo de
control:codtipo, dicha funcion dependiendo del tipo crea
el control adecuado y le asigns sus handlers a eventos ya
definidos:

SetEvents(ByRef obj As Control, ByVal codtipo As Integer)
Try
Select Case codtipo
Case 1 'TextBox
Dim txt As New TextBox
txt = DirectCast(obj, TextBox)
AddHandler txt.Validated, AddressOf
ValidarTipoControl
AddHandler txt.TextChanged, AddressOf
ValueChanged
AddHandler txt.KeyPress, AddressOf
KeyDownValidator
...

lo que sucede es: no permite hacer el cambio de tipos y el
objeto se crea pero el objeto no actua como el creado al
regresar y reusarlo.

Gracias por su tiempo.
 

Leer las respuestas

#1 Guillermo guille
08/11/2004 - 14:58 | Informe spam
Estas dos líneas:
Dim txt As New TextBox
txt = DirectCast(obj, TextBox)
La primera "instanciación" realmente no es necesaria, podrías dejarla como Dim
txt As Textbox.
Lo que deberías hacer es crear el nuevo objeto antes de llamar a ese método,
(el pasarlo con ByRef o ByVal realmente no afecta).

Finalmente, prueba a asignar nuevamente a obj el contenido de txt antes de
salir del método:
obj = txt

De todas formas, si esos controles van a estar dentro de una colección, podrías
hacer comprobaciones internas del tipo de datos, (en lugar de usar el segundo
parámetro), de forma que según el tipo de control, asigne los eventos
adecuados.

Algo así es lo que hago en este código:
http://www.elguille.info/NET/dotnet...troles.htm


Nos vemos.
Guillermo
Microsoft VB MVP desde 1997
Te invito a mi sitio dedicado al VB y más...
http://www.elguille.info/
http://www.mundoprogramacion.com/
(puede que el correo usado sea anti-spam)


"JoseM" wrote in message
news:455301c4c594$3d0bed40$
Saludos a todos,
Tengo una duda problema que crei funcionaria. Hice una
funcion que recibe una variable por referencia:obj de tipo
control, y un entero que me indica el tipo de
control:codtipo, dicha funcion dependiendo del tipo crea
el control adecuado y le asigns sus handlers a eventos ya
definidos:

SetEvents(ByRef obj As Control, ByVal codtipo As Integer)
Try
Select Case codtipo
Case 1 'TextBox
Dim txt As New TextBox
txt = DirectCast(obj, TextBox)
AddHandler txt.Validated, AddressOf
ValidarTipoControl
AddHandler txt.TextChanged, AddressOf
ValueChanged
AddHandler txt.KeyPress, AddressOf
KeyDownValidator
...

lo que sucede es: no permite hacer el cambio de tipos y el
objeto se crea pero el objeto no actua como el creado al
regresar y reusarlo.

Gracias por su tiempo.

Preguntas similares