¿Cómo se puede deshabilitar la primera selección automática en una vista de datos de VS?

He creado una aplicación en Visual Studio (C #) que utiliza una vista de datos. Ahora, cuando asigno el DataSource de esa vista de datos, selecciona automáticamente la primera fila y ejecuta mi código para la selección. Como frecuentemente reasigno esa fuente de datos, esto no es deseable. ¿Hay alguna forma de cambiarlo para que no haga automáticamente esa primera selección y solo se base en las selecciones del usuario?

¡Gracias!

En respuesta al comentario de Darshan Joshi: Aparte del código generado automáticamente, lo único que se modificó en la vista de datos es establecer AutoGenerateColumns en falso y establecer la propiedad DataSource. He colocado un MessageBox. Mostrar en mi selección el delegado cambiado, y parece que incluso se llama tres veces cada vez que se establece la fuente de datos. Una vez justo antes de que se carguen los datos, y dos veces después.

No puedo configurar seleccionado como falso en la carga, ya que la fuente de datos se configura después de ciertas acciones del usuario, no en la inicialización.

Tuve el mismo problema y aquí está mi solución.

La parte difícil fue encontrar dónde borrar la selección … Solo podemos borrar la selección después de que DataGridView haya establecido la selección. Al principio, la selección solo está lista para ser borrada en el evento Form.Load, pero las configuraciones subsiguientes de DataGridView.DataSource la selección está lista para ser borrada inmediatamente después de la asignación de DataSource.

public class DataGridView_AutoSelectSuppressed : DataGridView { private bool SuppressAutoSelection { get; set; } public DataGridView_AutoSelectSuppressed() : base() { SuppressAutoSelection = true; } public new /*shadowing*/ object DataSource { get { return base.DataSource; } set { SuppressAutoSelection = true; Form parent = this.FindForm(); // Either the selection gets cleared on form load.... parent.Load -= parent_Load; parent.Load += parent_Load; base.DataSource = value; // ...or it gets cleared straight after the DataSource is set ClearSelectionAndResetSuppression(); } } protected override void OnSelectionChanged(EventArgs e) { if (SuppressAutoSelection) return; base.OnSelectionChanged(e); } private void ClearSelectionAndResetSuppression() { if (this.SelectedRows.Count > 0 || this.SelectedCells.Count > 0) { this.ClearSelection(); SuppressAutoSelection = false; } } private void parent_Load(object sender, EventArgs e) { ClearSelectionAndResetSuppression(); } } 

Espero que esto ayude.

Debe llamar a: ClearSelection después del evento: DataBindingComplete

Puedes deseleccionarlo en tu evento form_load como

  private void Form1_Load(object sender, EventArgs e) { dataGridView1.Rows[0].Selected = false; } 

Para cargar la cuadrícula sin ninguna selección, puede utilizar este fragmento de código.

  GridView.CurrentCell = null; 

Esto lo cargará plano, sin ninguna selección. Agregue esto después de asignar la fuente de datos a la cuadrícula.

Asegúrese de que NO está llamando al método para cargar los datos del constructor de formularios. Si lo llamas desde el Form.load ()

También después de que se haya cargado myDataGridView, haga esto

myDataGridView.Rows [0] .Selected = false;

Esto funcionó para mí:

Anule el registro del evento SelectionChanged justo antes de vincular los datos y luego vuelva a registrar el evento. Tal vez debería eliminar el registro del evento en el diseñador y registrar el evento manualmente en su código.

myDGV.SelectionChanged -= new System.EventHandler(this.myDGV_SelectionChanged);

Solo agrega SelectedItem = “- 1”, esto hará el truco