TIRAR SELACAO LINHA DATAGRIDVIEW

LUIS.HERRERA 15/03/2013 11:22:24
#420519
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?
KERPLUNK 15/03/2013 15:29:19
#420540
Como está carregando o grid?
ERINALDO 15/03/2013 16:47:08
#420547
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]
LUIS.HERRERA 16/03/2013 13:14:08
#420581
Erinaldo não funcionou nenhuma das alternativas.

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();
}
}
LITTLEBOY 17/03/2013 15:57:35
#420618
Resposta escolhida
Fala grande Luiz!

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();
}

LUIS.HERRERA 18/03/2013 08:10:49
#420630
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.
LITTLEBOY 18/03/2013 08:33:07
#420631
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;
Tópico encerrado , respostas não são mais permitidas