pcclrocks 0 Denunciar post Postado Julho 17, 2009 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
quintelab 91 Denunciar post Postado Julho 17, 2009 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
pcclrocks 0 Denunciar post Postado Julho 18, 2009 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
quintelab 91 Denunciar post Postado Julho 20, 2009 O evento que você esta utilizando é o CellEnter, ele deve estar associado somente a uma célula, você deve utilizar um evento da row e não da célula. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Molinari 0 Denunciar post Postado Julho 30, 2009 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