none
Como enviar dados de um Form para outro RRS feed

  • Pergunta

  • Boa tarde!
    Estou tendo problema para preencher um TextBox de um formulário através de um botão localizado em um terceiro formulário.
    Melhor explicando:
    Tenho o Form1 com Button1, Button2, Button3 e um TextBox1
    Tenho o Form2 com TextBox1 e TextBox2
    Tenho o Form3 com TextBox1 e Button1
    O Form1 é um MdiContainer
    O Button1 do Form1, abre o Form2 e o Button2 abre o Form3.
    O Button3 do Form1 transfere o texto digitado no TextBox1 do Form1 para o TextBox1 do Form2
    Até aí tudo funciona perfeitamente!
    O problema é que eu quero que o Button1 do Form3 transfira o texto digitado no TextBox1 deste mesmo Form3 para o TextBox2 do Form2.
    A codificação que estou utilizando é essa abaixo:
    Form1:
    Public Class Form1
        Dim Frm2 As New Form2()
        Dim Frm3 As New Form3
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Frm2.MdiParent = Me
            Frm2.Show()
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Frm3.MdiParent = Me
            Frm3.Show()
        End Sub
    
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            Frm2.TextBox1.Text = Me.TextBox1.Text
        End Sub
    End Class
    
    Form2:
    Public Class Form2
    
        Public Frm1 As Form1, Frm3 As Form3
    
    End Class
    Form3:
    Public Class Form3
        Dim Frm2 As New Form2
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Frm2.Frm3 = Me
    
            Frm2.TextBox2.Text = TxtFrm3.Text
        End Sub
    End Class
    Quando clico no Button1 do Form3, nada acontece, ou seja, o texto não é transferido para o TextBox2 do Form2.
    Se puderem ajudar, fico muito grato.
    Sds.



    Pozzato

    quarta-feira, 18 de dezembro de 2019 17:13

Respostas

  • Tente criar uma classe ou módulo separado declare a variável pública lá.

    Por exemplo:

    Public Class BD
        Public Shared minha_variavel_publica As String

    End Class

    No formulário qualquer você carrega a variável

    Partial Class web_Default
        
        Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            BD.minha_variavel_publica = "teste"
            Response.Redirect("~/web/credenciamento")
        End Sub
    End Class

    No outro você recupera

    Partial Class credenciamento_Default

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load

            MsgBox(BD.minha_variavel_publica)


            If Not IsPostBack Then
                txt_Login.Attributes.Add("onkeypress", "return somente_letras_numeros(event)")
                txt_Senha.Attributes.Add("onkeypress", "return somente_letras_numeros(event)")
                Session("Página_Atual") = Request.CurrentExecutionFilePath
            End If
        End Sub

    End Class


    MARIANO1776

    • Marcado como Resposta Pozzato sábado, 28 de dezembro de 2019 14:19
    sábado, 21 de dezembro de 2019 16:44

Todas as Respostas

  • Boa noite.

    Já tentou utilizando variáveis públicas?


    MARIANO1776

    sexta-feira, 20 de dezembro de 2019 00:21
  • Olá Mariano1776, boa noite!
    Obrigado pelo interesse em responder.
    Sim, já tentei, mas a variável publica teria que partir do Form2, mas a chamada é do Form1, portando não passa pelo Form2 para chegar ao Form3. 
    Tem mesmo que instanciar os Forms, mas não estou conseguindo fazer isso.
    Só estou conseguindo instanciar os Forms 1 e 2. Tenho que instanciar o 2 e o 3 e não sei como fazer.
    Abs.

    Pozzato

    sexta-feira, 20 de dezembro de 2019 01:12
  • Boa noite.

    Não entendi.

    Uma variavel pública deveria ficar fora de todos os forms, porisso é pública, podendo ser manipulada por qualquer form.


    MARIANO1776

    sábado, 21 de dezembro de 2019 01:37
  • Boa noite!<o:p></o:p>

    Sim, a variável pública fica fora de todos os forms. Portanto eu poderia criar uma variável pública no Form3 e recuperá-la no Form2. O problema é que não entro no Form2.<o:p></o:p>

    Eu quero preencher uma caixa de texto que está no Form2 através do Form3.<o:p></o:p>

    Os Forms 2 e 3 são "abertos" pelo Form1, porém o Form2 só serve para mostrar as caixas de texto.<o:p></o:p>

    Quando mando preencher a TextBox1 pelo Form1, funciona na boa, pois o Form2 foi instanciado no Form1.

    Mas quando tento preencher a TextBox2 pelo Form3, não funciona, pois não consigo instanciar o Form2 pelo Form3.<o:p></o:p>

    Quero saber como instanciar o Form2 tanto pelo Form1 quanto pelo Form3.<o:p></o:p>

    Vlw.<o:p></o:p>



    Pozzato

    sábado, 21 de dezembro de 2019 03:12
  • Tente criar uma classe ou módulo separado declare a variável pública lá.

    Por exemplo:

    Public Class BD
        Public Shared minha_variavel_publica As String

    End Class

    No formulário qualquer você carrega a variável

    Partial Class web_Default
        
        Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            BD.minha_variavel_publica = "teste"
            Response.Redirect("~/web/credenciamento")
        End Sub
    End Class

    No outro você recupera

    Partial Class credenciamento_Default

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load

            MsgBox(BD.minha_variavel_publica)


            If Not IsPostBack Then
                txt_Login.Attributes.Add("onkeypress", "return somente_letras_numeros(event)")
                txt_Senha.Attributes.Add("onkeypress", "return somente_letras_numeros(event)")
                Session("Página_Atual") = Request.CurrentExecutionFilePath
            End If
        End Sub

    End Class


    MARIANO1776

    • Marcado como Resposta Pozzato sábado, 28 de dezembro de 2019 14:19
    sábado, 21 de dezembro de 2019 16:44
  • Ok! Vou tentar. Obrigado!

    Pozzato

    sábado, 21 de dezembro de 2019 20:05
  • Conseguiu?

    MARIANO1776

    sexta-feira, 27 de dezembro de 2019 00:56
  • Bom dia!
    Consegui sim, obrigado!
    Abs.

    Pozzato

    sábado, 28 de dezembro de 2019 14:19