TIRAR SELACAO LINHA DATAGRIDVIEW
Bom dia.
Tenho um datagrid que é carregado no Load do formulário, o problema é que ele sempre seleciona a primeira linha de dados do grid e não quero que seja selecinado nada, só quando o usuário quiser.
Tentei no loda usar:
grid.CurrentRow.Selected = false; //tira seleção da linha
grid.Refresh();
Mas não funciona. Essas linhas acima só funcionam quando mando atualizar o grid novamente após uma consulta ao banco e não no carregamento do formulário.
Como posso resolver isso?
Tenho um datagrid que é carregado no Load do formulário, o problema é que ele sempre seleciona a primeira linha de dados do grid e não quero que seja selecinado nada, só quando o usuário quiser.
Tentei no loda usar:
grid.CurrentRow.Selected = false; //tira seleção da linha
grid.Refresh();
Mas não funciona. Essas linhas acima só funcionam quando mando atualizar o grid novamente após uma consulta ao banco e não no carregamento do formulário.
Como posso resolver isso?
Como está carregando o grid?
COLOCA NO CODIGO LOAD DO FORM PARA O FOCU SER MUDADO PARA OUTRO CAMPO QUALQUER.
OU DEIXA O GRID DESABILITADO
[txt-color=#007100] NOME_DO_CAMPO.Select()[/txt-color]
OU DEIXA O GRID DESABILITADO
[txt-color=#007100] NOME_DO_CAMPO.Select()[/txt-color]
Erinaldo não funcionou nenhuma das alternativas.
O código é esse:
O código é esse:
public void AtualizarGrid(string mySQL)
{
// comunicação com a classe BLL
DepartamentosBLL obj = new DepartamentosBLL();
DataTable dt = new DataTable();
try
{
dt = obj.MontaGridViewDepto(mySQL);
grid.DataSource = dt;
grid.RowsDefaultCellStyle.BackColor = Color.LightCyan;
grid.AlternatingRowsDefaultCellStyle.BackColor = Color.LightBlue;
grid.CellBorderStyle = DataGridViewCellBorderStyle.None;
grid.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
grid.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
grid.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
grid.AllowUserToResizeColumns = false;
grid.CurrentRow.Selected = false; //tira seleção da linha
}
catch (SqlException ex)
{
MessageBox.Show(Idioma.RetornaMensagem([Ô]ErroServidorSQL[Ô]) + ex.Message, Idioma.RetornaMensagem([Ô]TituloAvisoMSG[Ô]), MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
catch (Exception ex)
{
MessageBox.Show(Idioma.RetornaMensagem([Ô]ErroNaoPrevisto[Ô]) + ex.Message, Idioma.RetornaMensagem([Ô]TituloAvisoMSG[Ô]), MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
finally
{
dt.Dispose();
}
}
Fala grande Luiz!
defina o evento DataBindingComplete do gridview e coloque como está o codigo abaixo:
defina o evento DataBindingComplete do gridview e coloque como está o codigo abaixo:
Citação:
private void dgv_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
DataGridView gridView;
gridView = (DataGridView) sender;
gridView.ClearSelection();
}
Bom dia Littleboy.
Funcionou perfeitamente, só tive de incluir o método LimparCampos(); ao final deste código, pois como o evento grid_SelectionChanged era disparado no carregamento, os campos eram preenchidos, assim eu limpo após carregar e tirar a seleção, ficou perfeito.
Agora pesquisei muito e não encontrei nada disso, como se descobre essas coisas?
Uma pergunta, como funciona essa sintaxe (DataGridView)Sender; ?
Porque fica entre parênteses e sem ponto depois?
Muito obrigado.
Funcionou perfeitamente, só tive de incluir o método LimparCampos(); ao final deste código, pois como o evento grid_SelectionChanged era disparado no carregamento, os campos eram preenchidos, assim eu limpo após carregar e tirar a seleção, ficou perfeito.
Agora pesquisei muito e não encontrei nada disso, como se descobre essas coisas?
Uma pergunta, como funciona essa sintaxe (DataGridView)Sender; ?
Porque fica entre parênteses e sem ponto depois?
Muito obrigado.
isto é um cast. como sender é um tipo Object, eu preciso converte-lo para o tipo correto, neste DataGridView
sintaxe:
([Ô]tipo de dados[Ô])[Ô]valor a converter[Ô]
int i=25;
float f;
f=(float)i;
sintaxe:
([Ô]tipo de dados[Ô])[Ô]valor a converter[Ô]
int i=25;
float f;
f=(float)i;
Tópico encerrado , respostas não são mais permitidas