Ayudapaso de parametros entre formas

12/08/2004 - 18:40 por Omar Flores | Informe spam
Ayuda con el siguiente código por favor. Descripción de lo que pretendo
hacer. Tengo una forma
llamada frmProveedores en la cual pongo un botón btnbusca2 el cual me va a
abrir una forma
llamada BuscaProveedor en la cual tengo un listBox con los nombres de los
proveedore, quiero que
al darle doble click al listado me regrese su RFC y cierre la forma, y me
aparezca el RFC en el
txtMRFC de la forma frmProveedores (Principal) el sig. código es la forma en
que lo estoy haciendo
no me marca ningun error y segun eso si hace la asignación pero al momento
de cerrar la forma de
busqueda y regresar a la principal no aparece nada en el txtMRFC de la forma
principal, ojalá y
alguien me pueda ayudar con esto, Muchas gracias


Modulogeneral.vb

Public Proveedores As New frmProveedores

-
En frmProveedores (forma principal)

Private Sub btnBusca2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles btnBusca2.Click
Dim BuscaProveedor As New frmBuscaProveedor
BuscaProveedor.Show()
End Sub

'Doble click en el list box de la forma BuscaProveedor (Forma de busqueda)
Private Sub lstListadoProv_DoubleClick(ByVal sender As Object, ByVal e
As System.EventArgs) Handles lstListadoProv.DoubleClick
Dim strRFC As String
strRFC = lstListadoProv.SelectedValue
Proveedores.txtMRFC.Focus()
Proveedores.txtMRFC.Text = strRFC
Me.Close()
End Sub

Preguntas similare

Leer las respuestas

#1 Tristan
12/08/2004 - 19:20 | Informe spam
Yo empezaría echando un vistazo a esta página:

http://www.microsoft.com/spanish/ms...eForms.asp

En el aparatado "¿Cómo trata este problema el Asistente para
actualización?", te explica como aplicar el patrón singleton. Con él no
habrá diferencia con la forma de trabajo de vb6, escepto que tendrás que
añadir DefInstance a cada acceso al módulo.

Hay formas mejores de comunicar objetos, pero también más complicadas de
entender para alguien que viene de vb6.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 AJPB
12/08/2004 - 20:14 | Informe spam
Eso tiene que ver como manejes los formularios en vb.net,
empezando porque deberias declararlos en una clase aparte
no dentro del evento. Una forma poco formal de hacerlo:

Pon una variable X tipo string en un modulo, con acceso
publico, en el evento del listbox le pasas la cadena a X.
Luego en el evento Activate del Proveedores actualizas el
textbox leyendo de la variable X. Done

Salud

Alejandro


Ayuda con el siguiente código por favor. Descripción de


lo que pretendo
hacer. Tengo una forma
llamada frmProveedores en la cual pongo un botón


btnbusca2 el cual me va a
abrir una forma
llamada BuscaProveedor en la cual tengo un listBox con


los nombres de los
proveedore, quiero que
al darle doble click al listado me regrese su RFC y


cierre la forma, y me
aparezca el RFC en el
txtMRFC de la forma frmProveedores (Principal) el sig.


código es la forma en
que lo estoy haciendo
no me marca ningun error y segun eso si hace la


asignación pero al momento
de cerrar la forma de
busqueda y regresar a la principal no aparece nada en el


txtMRFC de la forma
principal, ojalá y
alguien me pueda ayudar con esto, Muchas gracias


Modulogeneral.vb

Public Proveedores As New frmProveedores

-
En frmProveedores (forma principal)

Private Sub btnBusca2_Click(ByVal sender As


System.Object, ByVal e As
System.EventArgs) Handles btnBusca2.Click
Dim BuscaProveedor As New frmBuscaProveedor
BuscaProveedor.Show()
End Sub

'Doble click en el list box de la forma BuscaProveedor


(Forma de busqueda)
Private Sub lstListadoProv_DoubleClick(ByVal sender


As Object, ByVal e
As System.EventArgs) Handles lstListadoProv.DoubleClick
Dim strRFC As String
strRFC = lstListadoProv.SelectedValue
Proveedores.txtMRFC.Focus()
Proveedores.txtMRFC.Text = strRFC
Me.Close()
End Sub




.

Respuesta Responder a este mensaje
#3 Tristan
12/08/2004 - 22:11 | Informe spam
Omar, en realidad es muy, muy sencillo. Lamentablemente las malas costumbres
facilitadas por vb anteriores, dificultan comprender como comunicar objetos.

La forma que te he dado, funciona siempre que hagas todos los accesos a
todos los formularios añadiendo .DefInstance. Imagino que los formularios no
los has instanciado con DefInstance. TuForm.DefInstance.Show o
TuForm.DefInstance.ShowDialog, así es que no sirve de nada.

Bueno, pero ya que esa forma no demasiado recomendable, no te ha ayudado, te
cuento la que yo utilizo. La siguiente es una forma completamente OOP. Como
verás la interacción entre objetos está bien delimitada, no le afectan
cambios interiores, lo que es un importante objetivo en OOP.

Modulogeneral.vb

Siempre sin módulos

-
En frmProveedores (formulario principal)

Private Sub btnBusca2_Click(sender As Object, e As EventArgs) Handles
btnBusca2.Click
Dim BuscaProveedor As New frmBuscaProveedor
'Por qué no modal. Alguna razón?
if BuscaProveedor.ShowDialog() = DialogResult.OK then
Me.txtMRFC.Text = BuscaProveedor.Proveedor
end if
BuscaProveedor.Dispose()
End Sub

En BuscaProveedores (formulario de búsqueda)

Botón Aceptar, DialogResult => OK
Botón Cancelar, DialogResult => Cancel

'Doble click en el list box de la forma BuscaProveedor (Forma de busqueda)
Private Sub lstListadoProv_DoubleClick(sender As Object, e As EventArgs)
Handles lstListadoProv.DoubleClick
Me.DialogResult = DialogResult.OK
Me.Close()
End Sub

Public ReadOnly Property Proveedor() As String
Get
return lstListadoProv.SelectedValue
End Get
End Property


Si por un casual, estás obligado a que el cuadro sea no modal (rarísimo en
un caso así), te puedo explicar como hacerlo. Es un poco más complicado,
pero no demasiado.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#4 Omar Flores
12/08/2004 - 22:35 | Informe spam
Hola, ya cheque el documento, pero sigo en las mismas, sigue sin aparecerme
el valor. La verdad si se me hace un poco complicado entender esto.


Auxilio. si tienen algún metodo mejor y más facil diganmelo por favor,
si tuvieran el código mejor.
o algúna otra sugerencia de busqueda, algun componente que que haga este
tipo de busquedas con bases de datos.

de antemano muchas gracias.



"Tristan" escribió en el mensaje
news:%
Yo empezaría echando un vistazo a esta página:




http://www.microsoft.com/spanish/ms...eForms.asp

En el aparatado "¿Cómo trata este problema el Asistente para
actualización?", te explica como aplicar el patrón singleton. Con él no
habrá diferencia con la forma de trabajo de vb6, escepto que tendrás que
añadir DefInstance a cada acceso al módulo.

Hay formas mejores de comunicar objetos, pero también más complicadas de
entender para alguien que viene de vb6.

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
#5 Omar Flores
13/08/2004 - 00:09 | Informe spam
Que tal, Muchas gracias, ahora si ya funcionó, pero aún no comprendo lo del

"BuscaProveedor.ShowDialog() = DialogResult.OK"

No entiendo el por que ShowDialog y no Show

Por qué asi, si funciona y como yo lo tenia no funciona pero no marca ningun
error sólo que no hace la asignación.

Por favor expliquenme eso para comprenderlo y saber el por que.

Y Muchas gracias por sacarme de mi problema.

"Tristan" escribió en el mensaje
news:
Omar, en realidad es muy, muy sencillo. Lamentablemente las malas


costumbres
facilitadas por vb anteriores, dificultan comprender como comunicar


objetos.

La forma que te he dado, funciona siempre que hagas todos los accesos a
todos los formularios añadiendo .DefInstance. Imagino que los formularios


no
los has instanciado con DefInstance. TuForm.DefInstance.Show o
TuForm.DefInstance.ShowDialog, así es que no sirve de nada.

Bueno, pero ya que esa forma no demasiado recomendable, no te ha ayudado,


te
cuento la que yo utilizo. La siguiente es una forma completamente OOP.


Como
verás la interacción entre objetos está bien delimitada, no le afectan
cambios interiores, lo que es un importante objetivo en OOP.

Modulogeneral.vb

Siempre sin módulos

-
En frmProveedores (formulario principal)

Private Sub btnBusca2_Click(sender As Object, e As EventArgs) Handles
btnBusca2.Click
Dim BuscaProveedor As New frmBuscaProveedor
'Por qué no modal. Alguna razón?
if BuscaProveedor.ShowDialog() = DialogResult.OK then
Me.txtMRFC.Text = BuscaProveedor.Proveedor
end if
BuscaProveedor.Dispose()
End Sub

En BuscaProveedores (formulario de búsqueda)

Botón Aceptar, DialogResult => OK
Botón Cancelar, DialogResult => Cancel

'Doble click en el list box de la forma BuscaProveedor (Forma de busqueda)
Private Sub lstListadoProv_DoubleClick(sender As Object, e As EventArgs)
Handles lstListadoProv.DoubleClick
Me.DialogResult = DialogResult.OK
Me.Close()
End Sub

Public ReadOnly Property Proveedor() As String
Get
return lstListadoProv.SelectedValue
End Get
End Property


Si por un casual, estás obligado a que el cuadro sea no modal (rarísimo en
un caso así), te puedo explicar como hacerlo. Es un poco más complicado,
pero no demasiado.

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida