none
Como pegar a linha selecionada no DataGridView do Form 2 e passar para o Form 1 RRS feed

  • Pergunta

  • Pessoal, como eu faço para resolver(de forma eficiente!!) este problema?

    Eu tenho um Form1(nele eu tenhos os txt, ComboBox, etc) nele eu tenho um campo de pesquisa, o usuário digita o nome do "aluno" por exemplo, e surge um nome form com apenas um gridview preenchido com os alunos que possuem aquele nome.

    Minha dúvida é como fazer para retornar para o Form1 as informações da linha selecionada no Form2.

    Eu vou utilizar o Evento CellDoubleClick do grid, e quero que assim que a pessoa dê um duplo click na linha que ele quer carregar o Form2 feche e o Form1 tenha os campos preenchidos com as informações das colunas da linha selecionada no form2.

    Espero que entendam oque quero fazer e consigam me ajudar!

    Abraço.

    domingo, 24 de agosto de 2014 20:42

Respostas

  • string mesmo,nesse caso voce ja pode apontar os textbox's que voce tem no form1 para as variaveis do Form2,entende?

    exemplo:

    public string Codigo
            {
                get { return _cod; }
                set { _cod = value; }
            }
    
    public string Nome
            {
                get { return _nome; }
                set { _nome = value; }
            }
    
    public string Idade
            {
                get { return _idade; }
                set { _idade = value; }
            }
    Form2 _f2 = new Form2();
                _f2.ShowDialog();
                txtCod.Text = _f2.Codigo;
                txtNome.Text = _f2.Nome;
                txtIdade.Text = _f2.Idade;

    Ou senao,pega somente o codigo e faça um select,mas ai fica mais complicado,


    Microsoft Technology Associate (MTA)

    • Marcado como Resposta Jhonathan Maia terça-feira, 26 de agosto de 2014 12:47
    terça-feira, 26 de agosto de 2014 00:50

Todas as Respostas

  • use o conceito de encapsulamento,no form1 ao chamar o form2 chame em janela modal,ou seja use o comando

    Form2 _f2 = new Form2();
    _f2.ShowDialog();

    e no form2 crie uma variavel local e alimente-a com o valor da grid,encapsule-a e quando o form2 for fechado

    o form1 recebe a variavel do form2 dessa forma:

     Form2 _f2 = new Form2();
                _f2.ShowDialog();
                textBox1.Text = _f2.Val;

    encapsulando e alimentando a variavel no form2:

     private string _val;
    
            public string Val
            {
                get { return _val; }
                set { _val = value; }
            }
    
            public Form2()
            {
                InitializeComponent();
            }
    
            private void dataGridView1_DoubleClick(object sender, EventArgs e)
            {
                this._val = //valor da linha selecionada
                this.Close();
            }


    Microsoft Technology Associate (MTA)

    domingo, 24 de agosto de 2014 23:37
  • Eduardo entendi bastante o conceito e já fiz na pratica, passando apenas um registro para o outro form deu certo, porem eu gostaria de passar uma linha completa do gridview, qual seria o tipo da variavel que eu devo criar e encapsular no form2?

    Como no exemplo abaixo que vc colocou opara mim, a variavel _val é do tipo string, para passar uma linha do grid qual deve ser o tipo?

     public string Val
            {
                get { return _val; }
                set { _val = value; }
            }

    E como ficaria o código com esse tipo, não sou muito familiarizado com datagrid.

    Vlw.

    segunda-feira, 25 de agosto de 2014 13:41
  • string mesmo,nesse caso voce ja pode apontar os textbox's que voce tem no form1 para as variaveis do Form2,entende?

    exemplo:

    public string Codigo
            {
                get { return _cod; }
                set { _cod = value; }
            }
    
    public string Nome
            {
                get { return _nome; }
                set { _nome = value; }
            }
    
    public string Idade
            {
                get { return _idade; }
                set { _idade = value; }
            }
    Form2 _f2 = new Form2();
                _f2.ShowDialog();
                txtCod.Text = _f2.Codigo;
                txtNome.Text = _f2.Nome;
                txtIdade.Text = _f2.Idade;

    Ou senao,pega somente o codigo e faça um select,mas ai fica mais complicado,


    Microsoft Technology Associate (MTA)

    • Marcado como Resposta Jhonathan Maia terça-feira, 26 de agosto de 2014 12:47
    terça-feira, 26 de agosto de 2014 00:50
  • Eduardo, fiz um pouco diferente joguei os valores todos em um array de strings, funcionou perfeitamente.

    vlw cara abraço.

    terça-feira, 26 de agosto de 2014 12:47