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.