***(Urgente) Compartir informacion entre Formularios (Urgente!!!!)

02/10/2004 - 17:18 por Macario Lopez | Informe spam
Tengo 2 formularios, en el principal(miforma1) estoy
llamando a un formulario secundario (miforma2).

En el formulario secundario (miforma2) es una especie de
busqueda en la cual despliego resultados en un datagrid,
y al hacerle doble-click pretendo regresar el codigo y el
nombre encontrados a la forma principal(miforma1)

En este foro encontre algo parecido a esto:
Public Sub New(ByVal cod As String,ByVal Nom AsString)
txtCod.Text = cod
txtnombre.Text = Nom
End Sub

Pero al hacer lo siguiente en el formulario secundario
(Miforma2):
Dim Forma1 As Form = New Miforma1(codigo,nombre)
Forma1.Show()
al hacer la instancia de la forma(miforma1) me produce un
error de NullReference en el constructor que cree en
miforma1, esto al querer asignar -> txtCod.Text = cod y
txtnombre.Text = Nom

le puse la intruccion "inicializacomponentes()" y si
funciona pero lo malo a qui es que crea otro formulario
nuevo de miforma1.

ha tambien intente lo siguiente en miforma1:

Public Property Texto1() As String
Get
Return txtcod.Text
End Get
Set(ByVal Value As String)
txtcod.Text = Value
End Set
End Property

y pues no me regresa el resultado! creo que por lo mosmo
del anterior que lo pone en otra forma nueva

Alguien me podria ayudar, por favor y gracias de antemano
 

Leer las respuestas

#1 Cesar Rivera
02/10/2004 - 23:09 | Informe spam
Saludos,

Entiendo que "miForma1" es la forma principal que muestra detalle de una
información y "miForma2" es la forma de búsqueda.

Hace unas semanas tuve el mismo inconveniente y se me ocurrió lo siguiente:
asumiendo que llamas "miForma2" desde "miForma1" usando ShowDialog, usar la
propiedad "Tag" de ambas formas. Debe existir una forma más fácil pero bueno,
aqui voy.

Debes crear una clase de los parámetros que involucra. Ejemplo:

Class BusqParam

Public codigo as String
Public nombre as String

Public New(ByVal cod as String, ByVal nom as String)
codigo = cod
nombre = nom
End Sub

End Class

En "miForma1", antes de llamar a "miForma2" se codifica:

Dim f2 as New miForma2()
Me.Tag = null
f2.Tag = Me
f2.ShowDialog()

"f2.Tag" contiene una referencia al objeto "miForma1" que usaremos más
adelante en "miForma2", mientras que "Me.Tag" representará los parámetros
obtenidos de "miForma2", nulo si no hay parámetros o una instancia de la
clase BusqParam si hubo parámetros.


Asumiendo que el usuario seleccionó el elemento buscado en el grid en la
forma "miForma2" y pulsó el botón "aceptar", se codificaría en el evento del
botón algo como:

Dim p as BusqParam
p = new BusqParam(txtCodigo.text, txtNombre.text)
CType(Me.Tag,System.Windows.Form).Tag = p
Me.Close()

y en el de cancelar:

CType(Me.Tag,System.windows.Form).Tag = Nothing
Me.Close()

Volviendo a "miForma1", la siguiente línea justo después de
"f2.ShowDialog()" verifica si hubo o no parámetros:

If Not (Me.Tag is Nothing) Then
' Hubo Parámetros... Procesar ...
' Obtener así
cod = CType(Me.Tag,BusqParam).codigo
nom = CType(Me.Tag,BusqParam).nombre
' ... etc etc...
Else
' No se consiguió información... Cancelar
End If

Espero que esto ayude ;)

Saludos,
Ing. Cesar Rivera
mbo, Vza

"Macario Lopez" wrote:

Tengo 2 formularios, en el principal(miforma1) estoy
llamando a un formulario secundario (miforma2).

En el formulario secundario (miforma2) es una especie de
busqueda en la cual despliego resultados en un datagrid,
y al hacerle doble-click pretendo regresar el codigo y el
nombre encontrados a la forma principal(miforma1)

En este foro encontre algo parecido a esto:
Public Sub New(ByVal cod As String,ByVal Nom AsString)
txtCod.Text = cod
txtnombre.Text = Nom
End Sub

Pero al hacer lo siguiente en el formulario secundario
(Miforma2):
Dim Forma1 As Form = New Miforma1(codigo,nombre)
Forma1.Show()
al hacer la instancia de la forma(miforma1) me produce un
error de NullReference en el constructor que cree en
miforma1, esto al querer asignar -> txtCod.Text = cod y
txtnombre.Text = Nom

le puse la intruccion "inicializacomponentes()" y si
funciona pero lo malo a qui es que crea otro formulario
nuevo de miforma1.

ha tambien intente lo siguiente en miforma1:

Public Property Texto1() As String
Get
Return txtcod.Text
End Get
Set(ByVal Value As String)
txtcod.Text = Value
End Set
End Property

y pues no me regresa el resultado! creo que por lo mosmo
del anterior que lo pone en otra forma nueva

Alguien me podria ayudar, por favor y gracias de antemano



Preguntas similares