none
Transferência de dados entre formulários RRS feed

  • Pergunta

  • Estou tentando transferir valores de um segundo form, aberto pelo primeiro, porém não está dando certo.

    Private Sub btn_Transfere_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Transfere.Click
    
        If dgv_Logradouros.SelectedRows.Count > 0 Then
          transfereDados()
          MessageBox.Show("Logradouro selecionado, informado com sucesso", "Atenção", MessageBoxButtons.OK)
          Me.Close()
        Else
          MessageBox.Show("Não há logradouro selecionado!", "Atenção", MessageBoxButtons.OK)
        End If
      End Sub
    
      Private Sub transfereDados()
        If _formOrigem.Name = "frm_Fornecedores" Then
    
          Dim f As frm_Fornecedores = New frm_Fornecedores
    
          f.txtLogradouro.Text = Me.dgv_Logradouros.CurrentRow.Cells(1).Value
          f.txtBairro.Text = Me.dgv_Logradouros.CurrentRow.Cells(3).Value
          f.txtCEP.Text = Me.dgv_Logradouros.CurrentRow.Cells(4).Value
          f.txtUF.Text = Me.cbo_UF.Text
          f.txtCidade.Text = Me.cbo_Cidade.Text
    
        ElseIf _formOrigem.Name = "frm_Clientes" Then
    
        End If
    
      End Sub
     


    Sergio Ivanenko
    sábado, 30 de abril de 2011 18:35

Respostas

Todas as Respostas

  • Passa o seu form1 no construtor de quando vc instancia o form2. No form2 deixa uma variavel global do tipo Form1. Ai voce atribui o form1 que veio como parametro no metodo contrutor para apontar para a variavel gloabl. Ai voce manipula ela baseado na variavel global.
    sábado, 30 de abril de 2011 21:44
  • Dá uma olhada no artigo que fiz no meu Blog sobre iss, como passar parâmetros entre formulários.

    http://www.maestrodotnet.com.br/?p=329


    Bruno Ferreira de Souza
    MSP - Microsoft Student Partner
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro
    • Marcado como Resposta Ivanenko domingo, 1 de maio de 2011 14:00
    domingo, 1 de maio de 2011 00:32
  • Bruno.
    Funcionou perfeitamente. Para devolução dos valores pelo segundo form aberto, como os valores devolvidos são seis, comcatenei os mesmos e no formulário usando ";" como delimitador. E para identificar estes valores utilizei a função SPLIT.
    Obrigado.
    No Form1:
    
    Dim frm As New frm_BuscaLogradouros
      frm.FormOrigem = Me
      frm.ShowDialog()
      Dim strREC As String = frm.ValorDevolvido
      If IsNothing(strREC) Then Exit Sub
      Dim strSPLIT() As String = Split(strREC, ";")
      idLogra = strSPLIT(0)
      Me.txtLogradouro.Text = strSPLIT(1)
      Me.txtBairro.Text = strSPLIT(2)
      Me.txtCEP.Text = strSPLIT(3)
      Me.txtUF.Text = strSPLIT(4)
      Me.txtCidade.Text = strSPLIT(5)
    
    No Form2 (Devolvendo valores):
    Dim strDEV As String
       Dim f As frm_Fornecedores = New frm_Fornecedores
       strDEV = Me.dgv_Logradouros.CurrentRow.Cells(0).Value.ToString
       strDEV = strDEV + ";" + Me.dgv_Logradouros.CurrentRow.Cells(1).Value
       strDEV = strDEV + ";" + Me.dgv_Logradouros.CurrentRow.Cells(3).Value
       strDEV = strDEV + ";" + Me.dgv_Logradouros.CurrentRow.Cells(4).Value
       strDEV = strDEV + ";" + Me.cbo_UF.Text
       strDEV = strDEV + ";" + Me.cbo_Cidade.Text
     

    Sergio Ivanenko
    domingo, 1 de maio de 2011 14:10
  • Ok, você poderia também ter criado uma propriedade para cada campo que queria retornar e pegar os valores de cada 1 como no exemplo. ;)
    Bruno Ferreira de Souza
    MSP - Microsoft Student Partner
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro
    domingo, 1 de maio de 2011 14:37