none
Carregar informação de grid em textbox em um form que já está aberto c# windows form RRS feed

  • Pergunta

  • Olá estou tentando fazer uma coisa que parece simples mais não estou conseguindo, quero ao clicar em um botão adicionar os dados de um grid vá para outro form que já está aberto. o problema é que só estou conseguindo carregar em um novo form não é isso que quero segue codigo para ajuda:

    evento do botão adicionar Form1

    private void btnAdicionar_Click(object sender, EventArgs e)
        {
    
            frmPedidos frmped = new frmPedidos(CODIGO, NOME, TELEFONE, ENDERECO); 
    
            CODIGO = int.Parse(dgvConsultaCliente.CurrentRow.Cells[0].Value.ToString());
            NOME = dgvConsultaCliente.CurrentRow.Cells[1].Value.ToString();
            TELEFONE = dgvConsultaCliente.CurrentRow.Cells[2].Value.ToString();
            ENDERECO = dgvConsultaCliente.CurrentRow.Cells[3].Value.ToString();
    
            frmped.Show();// aqui que ele carrega outro form tanto faz se usar ShowDialog ou Show mesmo
        }

    Form 2

    public frmPedidos(int codigo, string nome, string telefone, string endereco)
        {
            InitializeComponent();
            txtCodCliente.Text = codigo.ToString();
            txtNomeCliente.Text = nome;
            txtTelefoneCliente.Text = telefone; 
            txtEndCliente.Text = endereco;
    
    
        }

    Quero preencha no form2 já aberto e não em um novo form pois vou colocar mais outras tabelas que vão fazer o mesmo processo se fizer isso em todas vou perder as informações.

    Desde já agradeço a todos.


    domingo, 29 de outubro de 2017 17:45

Respostas

  • Olá Jameson!

    Primeiramente, quanto à questão de criação de propriedades e troca de informações entre os formulários, recomendo que você dê uma olhada neste artigo/vídeo:

    Enviando parâmetros de um formulário para o outro no Windows Forms e WPF

    Já quanto ao problema do formulário estar sendo aberto N vezes (e não estar reaproveitando o formulário que já estava aberto), você precisa antes de criar um formulário novo, checar se um formulário do tipo "frmPedidos" já não está aberto.. Se estiver, você utiliza o formulário que já está aberto.. Se não estiver, aí sim você cria um novo..

    Você consegue acessar a lista de todos formulários que estão abertos através da propriedade Application.OpenForms..

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    segunda-feira, 30 de outubro de 2017 09:27
    Moderador
  • Ola pessoal conseguir resolver da seguinte forma com ajuda segue 

    frmProduto primeira a ser aberta:


      private void btnProcCliente_Click(object sender, EventArgs e)
            {
                frmSlaveConsultaCliente frmSlaveProd = new frmSlaveConsultaCliente();
               
                if (frmSlaveProd.ShowDialog() != DialogResult.OK)
                return;
    
    
                txtCodCliente.Text = frmSlaveProd.Codigo.ToString();
                txtNomeCliente.Text = frmSlaveProd.Nome;
                txtTelefoneCliente.Text = frmSlaveProd.Telefone;
                txtEndCliente.Text = frmSlaveProd.Endereco;
                
            }

    tem a condição se o frmSlave retorna 

     public int Codigo { get; private set; }
               public string Nome { get; private set; }
               public string Telefone { get; private set; }
               public string Endereco { get;  private set; }
    
     private void btnAdicionar_Click(object sender, EventArgs e)
            {        
                  Codigo =  int.Parse(dgvConsultaCliente.CurrentRow.Cells[0].Value.ToString());         
                  Nome= dgvConsultaCliente.CurrentRow.Cells[1].Value.ToString();           
                  Telefone = dgvConsultaCliente.CurrentRow.Cells[2].Value.ToString();           
                  Endereco = dgvConsultaCliente.CurrentRow.Cells[3].Value.ToString();
                         
                this.DialogResult = DialogResult.OK; // para indicar ao Form chamador que o usuário adicionou um cliente

    Então os textbox da janela que ja estava aberta é preenchida corretamente com os dados que preciso.

    Obrigado pela ajuda a todos.

    • Marcado como Resposta Jameson Oliveira quarta-feira, 1 de novembro de 2017 23:38
    quarta-feira, 1 de novembro de 2017 23:38

Todas as Respostas

  • Você tem que encapsular e criar os métodos de acesso Get e Set.

    Com certeza resolveria seu problema

    domingo, 29 de outubro de 2017 21:20
  • Crie os get e set das textbox e do grid.

    domingo, 29 de outubro de 2017 21:24
  • Certo mais como eu usaria para pegas as informação do grid e adiciona no texbox por exemplo peguei e criei no form 2 onde contem os textbox 
     public string txtNomeBox { get; set; }
            public int txtCodBox { get; set; }
    
            public string txtTelefoneBox { get; set; }
            public string txtEndereco { get; set; }
    e o método do grid eu criaria no form1 mesmo ? Como crio os métodos de Grid é a mesma coisa que fiz dos textbox ? Se puder auxilar-me agradeço muito.
    domingo, 29 de outubro de 2017 22:45
  • Olá Jameson!

    Primeiramente, quanto à questão de criação de propriedades e troca de informações entre os formulários, recomendo que você dê uma olhada neste artigo/vídeo:

    Enviando parâmetros de um formulário para o outro no Windows Forms e WPF

    Já quanto ao problema do formulário estar sendo aberto N vezes (e não estar reaproveitando o formulário que já estava aberto), você precisa antes de criar um formulário novo, checar se um formulário do tipo "frmPedidos" já não está aberto.. Se estiver, você utiliza o formulário que já está aberto.. Se não estiver, aí sim você cria um novo..

    Você consegue acessar a lista de todos formulários que estão abertos através da propriedade Application.OpenForms..

    Abraço!


    André Alves de Lima
    Microsoft MVP - Client App Dev
    Visite o meu site: http://www.andrealveslima.com.br
    Me siga no Twitter: @andrealveslima

    segunda-feira, 30 de outubro de 2017 09:27
    Moderador
  • Ola pessoal conseguir resolver da seguinte forma com ajuda segue 

    frmProduto primeira a ser aberta:


      private void btnProcCliente_Click(object sender, EventArgs e)
            {
                frmSlaveConsultaCliente frmSlaveProd = new frmSlaveConsultaCliente();
               
                if (frmSlaveProd.ShowDialog() != DialogResult.OK)
                return;
    
    
                txtCodCliente.Text = frmSlaveProd.Codigo.ToString();
                txtNomeCliente.Text = frmSlaveProd.Nome;
                txtTelefoneCliente.Text = frmSlaveProd.Telefone;
                txtEndCliente.Text = frmSlaveProd.Endereco;
                
            }

    tem a condição se o frmSlave retorna 

     public int Codigo { get; private set; }
               public string Nome { get; private set; }
               public string Telefone { get; private set; }
               public string Endereco { get;  private set; }
    
     private void btnAdicionar_Click(object sender, EventArgs e)
            {        
                  Codigo =  int.Parse(dgvConsultaCliente.CurrentRow.Cells[0].Value.ToString());         
                  Nome= dgvConsultaCliente.CurrentRow.Cells[1].Value.ToString();           
                  Telefone = dgvConsultaCliente.CurrentRow.Cells[2].Value.ToString();           
                  Endereco = dgvConsultaCliente.CurrentRow.Cells[3].Value.ToString();
                         
                this.DialogResult = DialogResult.OK; // para indicar ao Form chamador que o usuário adicionou um cliente

    Então os textbox da janela que ja estava aberta é preenchida corretamente com os dados que preciso.

    Obrigado pela ajuda a todos.

    • Marcado como Resposta Jameson Oliveira quarta-feira, 1 de novembro de 2017 23:38
    quarta-feira, 1 de novembro de 2017 23:38