2011-07-02 24 views
5

Me he sentido frustrado por este extraño comportamiento de DataGridView.Celda de Datagridview seleccionada después de ClearSelection

Cuando se combina con datos, se selecciona una celda incluso cuando la cuadrícula no tiene foco. He adoptado ciertas soluciones como esta

this.ActiveControl = textBoxPartySearch; 
dataGridView1.Refresh(); 
dataGridView1.ClearSelection(); 
dataGridView1.CurrentCell = null; 
e.Handled = true; 

como se sugiere en esta pregunta mía: Remove blue colored row from DataGridView WinForms

Pero esta solución no funciona a veces y hacer que el código desordenado.

¿Hay alguna otra vista de tabla de datos gratuita disponible que no tenga este problema?

Respuesta

0

Cambie la forma en que une la cuadrícula.

Primero prepare la tabla de datos y luego asígnela a datagridview.

0
gvDataSources.CurrentCell.IsCurrent=false; 
gvDataSources.CurrentRow.IsCurrent = false; 
1

he tenido este problema y logró resolverlo mediante la adición de myDataGridView.ClearSelection(); al final de cada evento codificado.

Al principio solo por tenerlo al final de mi método DataBind() fue suficiente. Luego agregué algunos comportamientos personalizados para pintar filas y otras cosas y dejó de funcionar (es decir, siempre tenía la primera fila seleccionada).

Así que yo diría que si agregó un evento personalizado, esa puede ser la razón.

2

Esto funciona para mí:

En el constructor, después de la unión se establece, agregar un controlador para el evento DataBindingComplete:

dgvCommandos.DataSource = systeemCommandos; // = my List<> of objects 
dgvCommandos.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dgvCommandos_DataBindingComplete); 

El manejador:

void dgvCommandos_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) 
{ 
    dgvCommandos.ClearSelection(); 
} 

Si tiene la intención de seleccionar una fila (por ejemplo, después de agregar/insertar un nuevo objeto), simplemente configure:

dgvCommandos.Rows[insertPos].Selected = true; 
+0

Tienes que ponerlo aquí, en DataBindingComplete si tienes material en CellFormatting que se enreda mientras está encuadernado. –

Cuestiones relacionadas