none
Passar dados para formulário aberto RRS feed

  • Pergunta

  • Boa noite pessoal, estou com uma dificuldade besta.

    A situação é a seguinte, preciso passar os dados de um formulário (1) para um formulário já aberto (2), conforme a imagem abaixo. Alguém poderia me dar uma luz? 

    OBS: Quando eu faço com o formulário 2 fechado, funciona perfeitamente. Acho que estou utilizando o evento errado na hora de passar os dados. 

    Obrigado!


    segunda-feira, 24 de maio de 2021 23:18

Respostas

  • Thiago,

    Você precisa chama a instancia do formulário aberto e atribuir valor ao objeto que irá receber a informação.
    Mas fácil que explicar é mostrar...

    ==============================================
    Trocando informações entre WINDOWS-FORMS em C#
    Esse artigo fala sobre como trocar parâmetros e ter acesso de um FORM dentro de outro FORM em C#.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Artigo_Polimorfismo
    
    {
        public partial class Form1 : Form
        {   
            public Form1()
            {
                InitializeComponent();
            }
    
            //botao que ABRE o FORM B
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 formB = new Form2(this); //this, significa que estou passando ESSA classe (instância dela) como parametro
                formB.Show();
            }
        }
    }
    
    // Código do FORM B (manipulando o FORM A):
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Artigo_Polimorfismo
    {
        public partial class Form2 : Form
        {
            Form1 instanciaDoForm1; //crio um objeto do tipo FORM 1, que será usado dentro da classe
    
            //inicializador do FORM
            public Form2(Form1 frm1) //recebo por parametro um objeto do tipo FORM1
            {
                InitializeComponent();
                instanciaDoForm1 = frm1; //atribuo a instancia recebida pelo construtor a minha variavel interna
                //associo o mesmo texto do tbxTextBoxFormA ao meu FORM B
                tbxTextBoxFormB.Text = instanciaDoForm1.tbxTextBoxFormA.Text.ToString();
            }
    
            //botao alterar
            private void button1_Click(object sender, EventArgs e)
            {
                //passo para a textbox do FORM A o mesmo texto que está na minha do FORM B
                instanciaDoForm1.tbxTextBoxFormA.Text = tbxTextBoxFormB.Text.ToString();
                instanciaDoForm1.tbxTextBoxFormA.Refresh(); //recarrego ela
            }
        }
    }

    http://www.linhadecodigo.com.br/artigo/1741/trocando-informacoes-entre-windows-forms-em-csharp.aspx
    ==============================================
    Passar dados entre formulários
    04/11/2016
    3 minutos para o fim da leitura

    private void customersDataGridView_DoubleClick(object sender, EventArgs e)
    {
        System.Data.DataRowView SelectedRowView;
        NorthwindDataSet.CustomersRow SelectedRow;
    
        SelectedRowView = (System.Data.DataRowView)customersBindingSource.Current;
        SelectedRow = (NorthwindDataSet.CustomersRow)SelectedRowView.Row;
    
        Form2 OrdersForm = new Form2();
        OrdersForm.LoadOrders(SelectedRow.CustomerID);
        OrdersForm.Show();
    }

    https://docs.microsoft.com/pt-br/visualstudio/data-tools/pass-data-between-forms?view=vs-2019
    ==============================================
    Passar variaveis de um form para outro form RRS feed
    Visual Studio Development > C#

    https://social.msdn.microsoft.com/Forums/pt-BR/1cc67a7a-64f5-487f-809e-68fd83f5e994/passar-variaveis-de-um-form-para-outro-form?forum=vscsharppt
    ==============================================

    []'s,
    Fabio I.
    terça-feira, 25 de maio de 2021 00:27
  • Criei um textBox no FormB para receber o valor,

    Altere a propriedade Modifiers no textbox para public para poder ser acessado pelo formulário A

    O código fica assim:

    public partial class FormA : Form
      {
        FormB frmb = new FormB();
        public FormA()
        {
          InitializeComponent();
        }

        private void FormA_Load(object sender, EventArgs e)
        {
          frmb.Show(); // mova o formulário A para poder ver o FromB
        }

        private void dataGridView1_DoubleClick(object sender, EventArgs e)
        {
          if (dataGridView1.CurrentCell.Value != null)
            frmb.textBox1.Text = dataGridView1.CurrentCell.Value.ToString();
          else
            frmb.textBox1.Text = "";
        }
      }
    • Sugerido como Resposta Fabio I quinta-feira, 27 de maio de 2021 00:21
    • Marcado como Resposta Levi DomingosModerator domingo, 1 de agosto de 2021 15:40
    quarta-feira, 26 de maio de 2021 22:13

Todas as Respostas

  • Thiago,

    Você precisa chama a instancia do formulário aberto e atribuir valor ao objeto que irá receber a informação.
    Mas fácil que explicar é mostrar...

    ==============================================
    Trocando informações entre WINDOWS-FORMS em C#
    Esse artigo fala sobre como trocar parâmetros e ter acesso de um FORM dentro de outro FORM em C#.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Artigo_Polimorfismo
    
    {
        public partial class Form1 : Form
        {   
            public Form1()
            {
                InitializeComponent();
            }
    
            //botao que ABRE o FORM B
            private void button1_Click(object sender, EventArgs e)
            {
                Form2 formB = new Form2(this); //this, significa que estou passando ESSA classe (instância dela) como parametro
                formB.Show();
            }
        }
    }
    
    // Código do FORM B (manipulando o FORM A):
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Artigo_Polimorfismo
    {
        public partial class Form2 : Form
        {
            Form1 instanciaDoForm1; //crio um objeto do tipo FORM 1, que será usado dentro da classe
    
            //inicializador do FORM
            public Form2(Form1 frm1) //recebo por parametro um objeto do tipo FORM1
            {
                InitializeComponent();
                instanciaDoForm1 = frm1; //atribuo a instancia recebida pelo construtor a minha variavel interna
                //associo o mesmo texto do tbxTextBoxFormA ao meu FORM B
                tbxTextBoxFormB.Text = instanciaDoForm1.tbxTextBoxFormA.Text.ToString();
            }
    
            //botao alterar
            private void button1_Click(object sender, EventArgs e)
            {
                //passo para a textbox do FORM A o mesmo texto que está na minha do FORM B
                instanciaDoForm1.tbxTextBoxFormA.Text = tbxTextBoxFormB.Text.ToString();
                instanciaDoForm1.tbxTextBoxFormA.Refresh(); //recarrego ela
            }
        }
    }

    http://www.linhadecodigo.com.br/artigo/1741/trocando-informacoes-entre-windows-forms-em-csharp.aspx
    ==============================================
    Passar dados entre formulários
    04/11/2016
    3 minutos para o fim da leitura

    private void customersDataGridView_DoubleClick(object sender, EventArgs e)
    {
        System.Data.DataRowView SelectedRowView;
        NorthwindDataSet.CustomersRow SelectedRow;
    
        SelectedRowView = (System.Data.DataRowView)customersBindingSource.Current;
        SelectedRow = (NorthwindDataSet.CustomersRow)SelectedRowView.Row;
    
        Form2 OrdersForm = new Form2();
        OrdersForm.LoadOrders(SelectedRow.CustomerID);
        OrdersForm.Show();
    }

    https://docs.microsoft.com/pt-br/visualstudio/data-tools/pass-data-between-forms?view=vs-2019
    ==============================================
    Passar variaveis de um form para outro form RRS feed
    Visual Studio Development > C#

    https://social.msdn.microsoft.com/Forums/pt-BR/1cc67a7a-64f5-487f-809e-68fd83f5e994/passar-variaveis-de-um-form-para-outro-form?forum=vscsharppt
    ==============================================

    []'s,
    Fabio I.
    terça-feira, 25 de maio de 2021 00:27
  • Boa noite, Fábio, obrigado pela resposta!

    Sim, quando executo o form.Show(); funciona perfeitamente. O que eu preciso é:

    Quando clicar duas vezes na linha do datagrid, mandar os dados do form A para o form B. Sem precisar reabrir o form B. 

    Exemplo:

    private void dgvPecas_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { // Função para passar os dados para o form b (já aberto) this.close()

    // Não mostrar o form B novamente (somente atualizar os valores dele) }


    Obrigado


    terça-feira, 25 de maio de 2021 01:43
  • Criei um textBox no FormB para receber o valor,

    Altere a propriedade Modifiers no textbox para public para poder ser acessado pelo formulário A

    O código fica assim:

    public partial class FormA : Form
      {
        FormB frmb = new FormB();
        public FormA()
        {
          InitializeComponent();
        }

        private void FormA_Load(object sender, EventArgs e)
        {
          frmb.Show(); // mova o formulário A para poder ver o FromB
        }

        private void dataGridView1_DoubleClick(object sender, EventArgs e)
        {
          if (dataGridView1.CurrentCell.Value != null)
            frmb.textBox1.Text = dataGridView1.CurrentCell.Value.ToString();
          else
            frmb.textBox1.Text = "";
        }
      }
    • Sugerido como Resposta Fabio I quinta-feira, 27 de maio de 2021 00:21
    • Marcado como Resposta Levi DomingosModerator domingo, 1 de agosto de 2021 15:40
    quarta-feira, 26 de maio de 2021 22:13