elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Pasar datos entre formularios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar datos entre formularios  (Leído 5,125 veces)
decaos

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Pasar datos entre formularios
« en: 13 Octubre 2008, 08:17 am »

Hola he empezado a estudiar programacion y tengo un problema si alguien tuviera la respuesta de antemano le agradezco.

He creado un ejemplo pequeño para que vean el error que se me produce.

Si creamos un nuevo proyecto (muy simple) con tres formularios (Form1, Form2 y Form3).

En el primer formulario (Form1)  se coloca una caja de texto (TextBox1) y un botón .el código del evento click del botón debe hacer que se cargue el segundo formulario para eso yo pongo de código:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim formulario2 As New Form2()
        formulario2.Show()

End Sub

En el 2do ponemos hacemos lo mismo colocamos una caja de texto (TextBox1) y un botón. El código del evento click del botón debe hacer que se cargue el tercer formulario. Para eso yo pongo de código:


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim formulario3 As New Form3()
        formulario3.Show()

End Sub


Por último, en el último formulario (Form3) coloco solo una caja de texto. ahora lo que deseo es que al ingesar un texto en la primera caja de texto del primer formulario (TextBox1) este valor al pulsar el boton pase a la caja de texto del segundo formulario (TextBox1) y luego que del 2do formulario al pulsar el boton pase a la caja de texto del 3er formulario coloco el siguiente codigo en los eventos Load del 1er y 2do formulario:

EN EL FORMULARIO 2:

Public Class Form2

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.TextBox1.Text = Form1.TextBox1.Text
    End Sub
End Class

EN EL FORMULARIO 3:

Public Class Form3

    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.TextBox1.Text = Form2.TextBox1.Text
    End Sub
End Class


Una vez hecho esto, se puede comprobar como el valor pasa del formulario 1 al formulario 2 pero no pasa del formulario 2 al formulario 3.

Como ven, sólo se carga bien la segunda caja de texto. Pero la tercera nada.

ya he provado varios tipos de codigo que he encontrado en internet pero todos hacen lo mismo solo funciona para pasar de la primera a la 2da caja de texto

¿Por qué ocurre esto? ¿Cómo puedo solucionarlo?
Por adelantado, muchas gracias por su ayuda.


En línea

RagleM


Desconectado Desconectado

Mensajes: 484


what da fuck .. ill do it!!


Ver Perfil
Re: Pasar datos entre formularios
« Respuesta #1 en: 13 Octubre 2008, 16:37 pm »

hola, para poder dar a solucion a este problema lo que puedes hacer, opinion personal, es trabajar solo con objetos, osea en en el form2 y form3 declarar una variable publica..  algo asi

class form2 {
    public string var2
}
 de igual manera en el form3 y una vez que instancies el formulario ya sea 2 o 3 pasas el valor a esa variable y la muestras... seria algo asi:

        Dim formulario2 As New Form2()
        formulario2.var2 = TextBox1.text
        formulario2.Show()

espero dejarme entender.. y kizas alguien tiene una mejor forma de hacerlo

de todas formas espero te sirva mi respuiesta..

saludos


En línea

.                        (\ /)
                        (O.o)
                        (> <)
This is Bunny. Copy Bunny into your signature to help him on his way to world domination.

Linux Registered User # 387266
((( SPAWN )))

Desconectado Desconectado

Mensajes: 56



Ver Perfil
Re: Pasar datos entre formularios
« Respuesta #2 en: 13 Octubre 2008, 19:46 pm »

Hola proba de esta forma:

Code Form1

Código:
Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.Show()
    End Sub
End Class

Code Form2

Código:
Public Class Form2
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form3.Show()
    End Sub

    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.Text = Form1.TextBox1.Text
    End Sub
End Class

Code Form3

Código:
Public Class Form3
    Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.Text = Form2.TextBox1.Text
    End Sub
End Class

De esta forma haces referencia al formulario en si, y no a la copia del formulario que seria la instancia del objeto que creas. Espero haberte ayudado y si alguien tiene otra explicación podria compartirla tambien.

Saludos.
En línea


Cita de: EON
+ = SOLUCIÓN
decaos

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Pasar datos entre formularios
« Respuesta #3 en: 13 Octubre 2008, 22:28 pm »

gracias SPAWN  y tienes razon yo lo que estaba haciendo con Dim Formulario2 As New Form2() era crear un nuevo formulario y lo que tenia que hacer era referirme al formulario que ya estaba creado para ello hice un pequeño cambio casi tu lo has hecho declare la variable formulario2 como un objeto "Dim formulario2 As Object"
luego le asigne el formulario al cual quiero pasar "formulario2 = Form2"
luego asi al referirme a "formulario2" ahora si me estoy refiriendo a el formulario que tengo en mi proyecto y no a uno que he creado como me estaba pasando lo llegue a averiguar de tanto probar y al darme cuenta que aun despues de borrar el 2do y 3er form me seguia apareciendo el 2do form asi me di cuenta que era porq yo lo estaba creando. Gracias por tu respuesta tienes razon y es la forma correcta de hacerlo saludos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines