Comment empêcher la sélection de cellules datagridview au chargement du formulaire

Comment faire pour qu’une cellule de vue de grid de données ne soit pas sélectionnée au chargement du formulaire

J’ai trop essayé

Mes propriétés de dgvproducts sont (readonly = false,selection mode = CellSelect)

1) J’ai placé ce code sous la form shown , mais cela ne fonctionne pas pour moi.

  dgvProducts.Clearselection(); 

2) J’ai placé le code ci-dessus dans l’ databinding event comme ci-dessous.

  private void dgvProducts_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e) { //dgvProducts.ClearSelection(); ((DataGridView)sender).ClearSelection(); } 

ça ne marche pas pour moi …

3) J’ai placé un code similaire et j’ai ajouté une ligne supplémentaire à celle de form load event mais cela ne fonctionne pas pour moi.

  dgvProducts.ClearSelection(); dgvProducts.currentcell = null; 

mais ce n’est pas un travail pour moi ….

c’est mon code de chargement de formulaire

  private void SellEquipment_Load(object sender, EventArgs e) { getProductDetails(); dgvProducts.Columns[0].Visible = false; for (int i = 0; i < dgvProducts.Columns.Count; i++) if (dgvProducts.Columns[i] is DataGridViewImageColumn) { ((DataGridViewImageColumn)dgvProducts.Columns[i]).ImageLayout = DataGridViewImageCellLayout.Stretch; break; } } 

et ceci est mon code getproductdetails

  private void getProductDetails() { var products = from productlist in dbcontext.products select new { productid = productlist.productId, Name = productlist.Name, Image = productlist.Image, Description = productlist.Description, Price = productlist.Price }; BindingProductsource.DataSource = products; dgvProducts.DataSource = BindingProductsource; dgvProducts.ClearSelection(); } 

est-ce que quelqu’un aiderait sur ce point ..

Merci beaucoup…

Essayez de créer un nouvel événement OnShow et faites ce code:

  protected override void OnShown(EventArgs e) { if (this.dataGridView1.SelectedCells.Count > 0) { for (int i = 0; i < this.dataGridView1.SelectedCells.Count; i++) this.dataGridView1.SelectedCells[i].Selected = false; } } 

J’ai constaté que le fait de Form.OnShown() comme indiqué dans la réponse de @Mitja Bonca fonctionnait effectivement pour mes besoins. Cependant, j’ai constaté que l’utilisation de DataGridView.ClearSelection() m’a permis de réaliser une solution plus légère:

 protected override void OnShown(EventArgs e) { this.dataGridView1.ClearSelection(); base.OnShown(e); } 

En ce qui concerne l’appel à base.OnShown() , Microsoft recommande dans sa documentation:

Notes aux héritiers

Lorsque vous substituez OnShown dans une classe dérivée, veillez à appeler la méthode OnShown de la classe de base afin que les delegates enregistrés reçoivent l’événement.