Cómo se convierte de Vb6 a VB.Net el paso de un form como parámetro

06/07/2004 - 03:29 por Alfonso J | Informe spam
Hola grupo.
estoy intentando convertir un proyecto de Vb6 a VB.net
pero me he encontrado con el siguiente problema:
quiero pasar un formulario a un procedimiento donde voy a
realizar operaciones con varios controles del formulario.
En vb6 no tenía problema pero al convertirlo a .Net me
sale el siguiente error:
'UPGRADE_ISSUE: Control lblValor no se pudo resolver
porque está dentro del espacio de nombres genérico Form.
Haga clic aquí para obtener más información: 'ms-
help://MS.VSCC.2003/commoner/redir/redirect.htm?
keyword="vbup2072"'
en la ayuda me sale "CType
(MDIForm1.DefInstance.ActiveMDIChild, Form1).Label1.Text
= "Active""
pero no se resolver el problema. El procedimiento es
en VB6

Sub Cálculos(Frm As Form)
Frm.Total.txt=Frm.Valor*1.16
Frm).Iva.txt=Frm.Valor*0.16

end sub
Y la conversión es
Sub Cálculos(ByRef Frm As System.Windows.Forms.Form)
CType( Frm,???).Total.txt=Frm.Valor*1.16
CType( Frm,???).Iva.txt=Frm.Valor*0.16

end sub
Alquien sabe cómo solicionarlo
Un saludo
Alfons J

Sub Cálculos(ByRef Frm As System.Windows.Forms.Form)
Frm.Total.txt=Frm.Valor*1.16
Frm.Iva.txt=Frm.Valor*0.16

end sub

Preguntas similare

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
06/07/2004 - 06:18 | Informe spam
El problema es que la clase Form no tiene propiedades con nombre Total e Iva
sino que estar propiedades los tiene tu formulario. Lo que tienes que hacer
es declarar el parametro con el tipo de tu formulario. Por ejemplo, si tu
formulario se llama FormFactura:

Sub Cálculos(Frm As FormFactura)
Frm.Total.txt=Frm.Valor*1.16
Frm.Iva.txt=Frm.Valor*0.16
End Sub

Eso si, si Total e Iva son controles o variables globales asegurate de que
se puedan acceder desde fuera del formulario o mejor aun, crealas como
propiedades que accedan a los controles.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#2 Alfonso J
06/07/2004 - 08:37 | Informe spam
Gracias por responder.
El problema que tengo es que lo utilizo en varios
formularios como por ejemplo FormFactura, FormPedido,
FormAlbaranes, etc. Se puede resolver de alguna forma

Un saludo
Alfonso J

El problema es que la clase Form no tiene propiedades


con nombre Total e Iva
sino que estar propiedades los tiene tu formulario. Lo


que tienes que hacer
es declarar el parametro con el tipo de tu formulario.


Por ejemplo, si tu
formulario se llama FormFactura:

Sub Cálculos(Frm As FormFactura)
Frm.Total.txt=Frm.Valor*1.16
Frm.Iva.txt=Frm.Valor*0.16
End Sub

Eso si, si Total e Iva son controles o variables


globales asegurate de que
se puedan acceder desde fuera del formulario o mejor


aun, crealas como
propiedades que accedan a los controles.

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


.

Respuesta Responder a este mensaje
#3 Eduardo A. Morcillo [MS MVP VB]
06/07/2004 - 21:14 | Informe spam
Alfonso J wrote:
Gracias por responder.
El problema que tengo es que lo utilizo en varios
formularios como por ejemplo FormFactura, FormPedido,
FormAlbaranes, etc. Se puede resolver de alguna forma



Puedes crear un formulario que contenga esas propiedades y heredar los demas
de el o crear una interface con la propiedades e implementar esa interface
en los formularios.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
Respuesta Responder a este mensaje
#4 Tristan
08/07/2004 - 19:29 | Informe spam
Además de la alternativa de Eduardo, que me parece la mejor, puedes usar
late binding. Mediante reflection o de forma implícita (lo que hacias en
vb6):

De forma implícita, requiere Strict Off:

Sub Cálculos(Frm As Form)
dim f as Object = Frm ' La única difer. con VB6. Solo sobre Object
f.Total.txt = f.Valor*1.16
f.Iva.txt = f.Valor*0.16
end sub


Mediante reflection es algo más complicado así es que solo lo pondré si
estás interesado, cosa que dudo :-)


Juan Carlos Badiola
MVP - C#
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida