Sélection d'une ligne dans DataGridView par programmation


109

Comment puis-je sélectionner une plage particulière de lignes dans un DataGridViewprogramme au moment de l'exécution?

Réponses:


128

Non testé, mais je pense que vous pouvez faire ce qui suit:

dataGrid.Rows[index].Selected = true;

ou vous pouvez faire ce qui suit (mais encore une fois: non testé):

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}

Méfiez-vous si votre DataGridView est read-only- alors SelectedRows.Clear()ne fonctionnera pas.
Derek W

14
Au lieu de SelectedRows.Clear (), utilisez la méthode ClearSelection () de l'instance datagridview
Furkan

1
@Furkan: Cela ne fait pas la même chose. Avec SelectedRows.Clear()seulement les lignes sélectionnées sont effacées, mais avec ClearSelection()aussi les colonnes => les sélections de colonnes sont perdues ...
Christoph Fink

17
ajouter une ligne de codedataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless: l'événement SelectionChanged ne semble pas être déclenché lors du test de votre suggestion.
user2430797

34

Dans Visual Basic, procédez comme suit pour sélectionner une ligne dans un DataGridView; la ligne sélectionnée apparaîtra avec une couleur en surbrillance mais notez que la position du curseur ne changera pas:

Grid.Rows(0).Selected = True

Faites ceci changer la position du curseur:

Grid.CurrentCell = Grid.Rows(0).Cells(0)

La combinaison des lignes ci-dessus positionnera le curseur et sélectionnera une ligne. Voici la procédure standard pour la mise au point et la sélection d'une ligne dans un DataGridView:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True

Grid.Rows (0) .Cells (0) est très utile dans le cas de données de grille plus longues que la zone d'affichage de la grille. L'ordre mentionné ci-dessus n'est pas nécessaire, vous pouvez faire glisser le code pour la sélection de ligne / cellule [source: personnellement testé].
BiLaL

Comment déplacer la grille vers la position sélectionnée? La ligne est sélectionnée mais la position de la grille n'est pas sur la ligne sélectionnée. Le défilement manuel montre la ligne sélectionnée. Comment forcer la grille à défiler?
FrenkyB

Voir ça: FirstDisplayedScrollingRowIndex
Rodrigo T.

12
DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;

0
 <GridViewName>.ClearSelection(); ----------------------------------------------------1
 foreach(var item in itemList) -------------------------------------------------------2
 {
    rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
    if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
    {
        <GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
    }
  }
  1. Efface toutes les sélections précédentes.
  2. Boucle à travers les lignes devant être sélectionnées dans votre grille.
  3. Obtenez leurs poignées de ligne de la grille (Notez ici que la grille est déjà mise à jour avec de nouvelles lignes)
  4. Vérifier si la poignée de ligne est valide ou non.
  5. Lorsque la poignée de ligne est valide, sélectionnez-la.

Où itemList est la liste des lignes à sélectionner dans la vue en grille.




-1

Lors de la définition d'une ligne sélectionnée d'un DataGridView au moment du chargement, envisagez de gérer cela dans l'événement DataBindingComplete, car il peut être remplacé par défaut.


-1

Essaye ça:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

J'espère que cette aide!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.