VB.NET. DataGridView sélectionner (et donc afficher) une ligne spécifique

Problématique

Supposons que vous ajoutiez des lignes saisies dans un DataGridView (un peu comme dans le défunt MSMoney où vous saisissiez votre écriture dans un pavé et que la ligne s’affichait dans la grille au-dessus, vous voyez ?). Ou que vous vouliez sélectionner (et donc afficher) la ligne n, celle-là et pas une autre.

Comme souvent en VB.NET, dont le workbench est au demeurant remarquable, ce n’est pas intuitif.

Solution

Nous dirons d’abord que votre DataGridView s’appelle myGrid.

1ère étape

Il est plus esthétique de commencer par désélectionner la ligne actuellement sélectionnée. Facile :

myGrid.CurrentRow.Selected = False

Mais s’il n’y a pas de ligne en cours, il y aura bug ! Il vaut mieux, non il faut, prendre la précaution suivante

if myGrid.CurrentRow IsNot Nothing Then

myGrid.CurrentRow.Selected = False

End If

et parce que le With simplifie l’écriture et rend le programme plus lisible, voici une suggestion (forte) d’écriture définitive

With myGrid

if .CurrentRow IsNot Nothing Then

.CurrentRows.Selected = False

End If

End With

2ème étape

Et là nous entrons dans le vif du sujet avec une grosse surprise : on ne peut pas sélectionner une ligne (row) dans un DataGridView ! Du moins pas directement. Il faut pour cela sélectionner une des cellules de la ligne (row). Et donc voici comment il faut faire si la ligne que vous voulez sélectionner est la n° numrow

With myGrid

.CurrentCell = .Item(0, numrow)

.CurrentRow.Selected = True

End With

Nous avons proposé comme cellule active celle de la colonne 0. Parce qu’on est sûr qu’elle existe : c’est la première colonne et la numérotation commence, ne l’oubliez pas, en 0. Or si vous avez une DataGridView sans colonnes, je vous pose une question : pourquoi ajouter une ligne à un tableau sans colonne. Et d’ailleurs est-ce encore un tableau ?

ET LE TOUR EST JOUÉ ! ALORS ON DIT MERCI QUI ?

Une réflexion au sujet de « VB.NET. DataGridView sélectionner (et donc afficher) une ligne spécifique »

  1. Ping : VB.NET DataGridView. Comment détruire la dernière rangée ? (suite et fin ?) | Mon blog-note informatique

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *