none
Como ejecutar el codio del evento Load RRS feed

  • Pregunta

  • Hola, 

    quisiera saber como puedo ejecutar codigo que tengo en el evento load de un form, el programa primero muestra unas datos en un textbox y un button, para actualizar estos datos te vas a un nuevo form, editas y regresas al primer form, aqui es donde necesito que se vuelva a ejecutar el codigo del evento load para que se actualice lo que se edito. 

    Ya trate haciendo ShowDialog() pero por una extraña razon el programa se cierra cuanto quiero regresar nuevamente al form de edicion, tambien trate de usar el BackgroundWorker pero no logro que ejecutarlo. 

    Les dejo una muestra del codigo. 

            Este es el codigo que necesito ejecutar, llama a subprocesos.

      Private Sub Captura_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            txtfm.Focus()
            versionnxfm()
            versionnxfmlv()
            versionxsmp()
            versionnxrm()

        End Sub

    Aqui me voy a Form Versiones, para editar los datos 

    Private Sub VersionesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VersionesToolStripMenuItem.Click
            Me.Hide()
            Versiones.Show()
        End Sub

    Aqui regreso, el formCaptura que es donde necesito que se ejecute de nuevo el evento Load pero no logro hacerlo 

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Me.Hide()
            Captura.Show()
        End Sub

    Esto es lo que tengo en el BackgroundWorker 

       Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

            'Se lee la version FM 
            fileReaderfm = My.Computer.FileSystem.OpenTextFileReader(Application.StartupPath & "\versiones\NXFM.txt")
            stringReaderfm = fileReaderfm.ReadLine()
            fileReaderfm.Close()
            btnFM.Text = "Version " & stringReaderfm
            txtNewFM.Text = stringReaderfm

            'Se lee la version SMP
            fileReadersmp = My.Computer.FileSystem.OpenTextFileReader(Application.StartupPath & "\versiones\NXSMP.txt")
            stringReadersmp = fileReadersmp.ReadLine()
            fileReadersmp.Close()
            btnSMP.Text = "Version " & stringReadersmp
            txtNewSMP.Text = stringReadersmp

            'Se lee la version FMLV 
            fileReaderfmlv = My.Computer.FileSystem.OpenTextFileReader(Application.StartupPath & "\versiones\NXFMLV.txt")
            stringReaderfmlv = fileReaderfmlv.ReadLine()
            fileReaderfmlv.Close()
            btnLV.Text = "Version " & stringReaderfmlv
            txtNewFMLV.Text = stringReaderfmlv

            'Se lee la version RM
            fileReaderRM = My.Computer.FileSystem.OpenTextFileReader(Application.StartupPath & "\versiones\NXRM.txt")
            stringReaderRM = fileReaderRM.ReadToEnd
            btnRM.Text = "Version " & stringReaderRM
            fileReaderRM.Close()
            lineas = System.IO.File.ReadAllLines(Application.StartupPath & "\versiones\NXRM.txt")


            txtNewFWrm.Text = lineas(0)
            txtNewSTrm.Text = lineas(1)
            txtNewLote.Text = lineas(2)
        End Sub

     Private Sub Captura_Shown(sender As Object, e As EventArgs) Handles Me.Shown
            BackgroundWorker1.RunWorkerAsync()
        End Sub

    miércoles, 14 de abril de 2021 16:25

Respuestas

  • el problema que tengo, es que cuando utilizo el ShowDialog(), cuanto quiero regresar devuelta al FormVersiones se cierra el programa. 

    Osea primero se ejecuta el programa y cargado todo bien, presiono para ir al FormVersiones hago lo que tengo que hacer, cuando cierro el FormVersiones mando a llamar al formprincipal por ShowDialog()

    Eso me suena fatal. Aquí hay algo que no cuadra. Nunca deberías tener que llamar al formprincipal por ShowDialog. El formprincipal permanece abierto por debajo cuando abres otro form mediante Show o ShowDialog, y se vuelve a ver cuando cierras el otro form. Si hubieras cerrado el formprincipal, el problema que que eso hace que termine la aplicación, si el formprincipal es el que se invoca mediante Application.Run() en el Main.
    jueves, 15 de abril de 2021 6:22

Todas las respuestas

  • Hay una solución sencilla: En el Form_Load, quita todo lo que haya y ponlo en una subrutina, y llama a esa subrutina.

    El Form Versiones llámalo con .ShowDialog en lugar de .Show.  Y la vuelta del ShowDialog, llama a esa misma subrutina que antes sacaste del Form_Load.

    Otra alternativa es sustitir el Form_Load por Form_Activated. Este último evento se ejecuta cada vez que activas el form (p.ej., si lo traes al frente si estaba tapado por otro). Pero esto a lo mejor te lo refresca más veces de las que querías.

    miércoles, 14 de abril de 2021 17:11
  • Hola Ernesto,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    miércoles, 14 de abril de 2021 17:47
    Moderador
  • Hola, Gracias por tu respuesta. 

    el problema que tengo, es que cuando utilizo el ShowDialog(), cuanto quiero regresar devuelta al FormVersiones se cierra el programa. 

    Osea primero se ejecuta el programa y cargado todo bien, presiono para ir al FormVersiones hago lo que tengo que hacer, cuando cierro el FormVersiones mando a llamar al formprincipal por ShowDialog() y si me muestra todo bien, pero cuando vuelvo a presionar para ir a FormVersion el programa se me cierra. Es por eso que no uso el ShowDialog(). 

    Voy a tratar con el Form_Activated. Igual es una consulta facil a archivo de txt. 

    Gracias. 

    miércoles, 14 de abril de 2021 21:14
  • el problema que tengo, es que cuando utilizo el ShowDialog(), cuanto quiero regresar devuelta al FormVersiones se cierra el programa. 

    Osea primero se ejecuta el programa y cargado todo bien, presiono para ir al FormVersiones hago lo que tengo que hacer, cuando cierro el FormVersiones mando a llamar al formprincipal por ShowDialog()

    Eso me suena fatal. Aquí hay algo que no cuadra. Nunca deberías tener que llamar al formprincipal por ShowDialog. El formprincipal permanece abierto por debajo cuando abres otro form mediante Show o ShowDialog, y se vuelve a ver cuando cierras el otro form. Si hubieras cerrado el formprincipal, el problema que que eso hace que termine la aplicación, si el formprincipal es el que se invoca mediante Application.Run() en el Main.
    jueves, 15 de abril de 2021 6:22