Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

pcclrocks

inserir valor de celula de 1 datagrid para 1 textbox

Recommended Posts

ola a todos.

estou a trabalhar em c#, em windows forms.

o que pretendo parece ser simples, mas nao sei como fazer.

quero que ao carregar com o rato numa linha da datagrid, o valor da primeira coluna da linha selecionada seja enviado para uma textbox.

eu encontrei como fazer isso em VB, mas em C# deve ser diferente.

Vou dar um exemplo do que tenho feito no meu programa:

 

namespace Ferramenta
{
    public partial class VerFuncionarios : Form
    {
        public VerFuncionarios()
        {
            InitializeComponent();
        }

        private void VerFuncionarios_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'projectobaseDataSet.Funcionarios' table. You can move, or remove it, as needed.
            this.funcionariosTableAdapter.Fill(this.projectobaseDataSet.Funcionarios);
            dataGridView1.DataSource = this.projectobaseDataSet.Funcionarios;

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

a solução em VB seria usar este codigo:

Private Sub DataGridView1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
'---Quando o usuário clicar no controle , exibe o conteudo da célula referente a primeira coluna (Column=0)
MsgBox(DataGridView1.Rows(e.RowIndex).Cells(0).Value)

End Sub
aqui envia para uma msgbox, mas essa alteração é facil.

 

na minha ideia, penso ter de acrescentar isto ao meu código e alterar a linha do meio, só que não estou a conseguir.

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        DataGridView1_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter;

        textBox1.Text =(DataGridView1.Rows(e.RowIndex).Cells(0).Value);

        }

 

como faço o que pretendo? podem me apontar uma solução?

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

No código VB esta utilizando o evento CellEnter da grid no c#, você utilizou o CellContentClick, utiliza o mesmo evento.

Dentro do seu evento basta:

 

textBox1.Text =DataGridView1.Rows[e.RowIndex].Cells[0].Value;

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes de mais nada muito obrigado, funciona. apenas tive de fazer um cast.

 

string g;
            g = dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString();
            textBox1.Text = g;

só que acontece algo que não sei explicar.

eu quero que o valor inserido na textbox seja um inteiro(dai o cast), que está na primeira coluna da datagrid.

se eu clicar em qualquer linha da datagrid é me enviado o valor da primeira celula da linha (coluna 1), que era o pretendido.

mas se eu clicar na primeira celula da linha, onde está o valor a inserir, não me envia valor o valor da celula para a textbox. so envia se clicar na segunda celula ou seguinte.

não é estranho? estraga um pouco a ideia pois quem vai usar isto tem tendencia a clicar na primeira celula...

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha em VB nao sei se e igual mas no C# para você clicar no registro(uma linha) todo(qual quer parte da linha), voce muda apenas uma propriedade

SelectionMode <- essa propriedade deve estar com a opção -> FullRowSelect ..

 

 

vendo que voce ta pegando a cell[0]

 

 

var1 = dataGridView1.SelectedRows[0].Cells[0].Value; === colocando assim com a propriedade que disse. no c# pega a primeira celula de qualquer regsitro nao apenas do primeiro

 

espero ter ajudado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.