Jump to content

Recommended Posts

Posted

Boas 😕

Estou a fazer um programa em C# que preeche um DataGridView com uma tabela (socios) de uma bd acess, e no programa tenho uma textbox para escrever o numero de cada sócios para o caso de querer actualizar/remover dados.

Uma imagem para ajudar a compreender:

blablabla.jpg

E para facilitar a utilzação do programa adicionei isto para escrever automaticamente na textbox quando seleciono um socio:

        private void dgvDados_CellClick(object sender, DataGridViewCellEventArgs e)

        {

            textBox_Apa_Mod.Text = dgvDados.Rows[dgvDados.SelectedCells[0].RowIndex].Cells[0].FormattedValue.ToString();

        }

(O zero é porque primeiro campo de cada linha é o correspondente ao Nº de Sócio)

Agora o que eu presisava de ajuda era como fazer o inverso, ou seja se escrever na textbox para ficar automaticamente selecionado na DataGridView, alguem sabe?

Cumps!

Posted

Você pode fazer isto de várias formas, a mais direta seria a seguinte:

1) Percorrer todas as linhas do DataGridView, e ver se o código dela é igual ao que o usuário entrou no textBox

2) Se for, selecionar a coluna, caso contrário não selecionar ela (este último pode parecer redundante, mas se o usuário já tiver selecionado uma, garante que esta seja deselecionada para não ficar com 2 linhas selecionadas ao mesmo tempo)

ficaria algo +- assim:

for(int i=0; i< dgvDados.Rows.Count;i++)
{
       bool codigoEncontrado=dgvDados.Rows[i][0].ToString().Equals(textBox_Apa_Mod.Text);
          dgvDados.SetSelectedRowCore(i,encontrado)
}

Fernando Lage Bastos - MCP/MCTS/MCPD

Posted

Boas,

Obrigao pela ajuda, acabou por ficar assim:

        private void textBox_Apa_Mod_TextChanged(object sender, EventArgs e)

        {

            for (int i = 0; i < dgvDados.Rows.Count; i++)

            {

                if (!dgvDados.Rows.IsNewRow)

                {

                    if (dgvDados[0, i].Value.ToString() == textBox_Apa_Mod.Text)

                        dgvDados.Rows.Selected = true;

                }

            }

        }

EDIT: em relacao ao não deixar selecionar 2 linhas, já tinha isto: this.dgvDados.MultiSelect = false;

Cumprimentos  ?

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.