Modes de sélection dans le contrôle DataGridView Windows Forms

Parfois, vous souhaitez que votre application effectue des actions en fonction des sélections utilisateur au sein d’un DataGridView contrôle. Selon les actions, vous pouvez restreindre les types de sélection possibles. Par exemple, supposons que votre application puisse imprimer un rapport pour l’enregistrement actuellement sélectionné. Dans ce cas, vous pouvez configurer le DataGridView contrôle afin que le clic n’importe où dans une ligne sélectionne toujours l’intégralité de la ligne, et de sorte qu’une seule ligne à la fois puisse être sélectionnée.

Vous pouvez spécifier les sélections autorisées en définissant la DataGridView.SelectionMode propriété sur l’une des valeurs d’énumération suivantes DataGridViewSelectionMode .

Valeur DataGridViewSelectionMode Description
CellSelect Cliquez sur une cellule pour la sélectionner. Les en-têtes de ligne et de colonne ne peuvent pas être utilisés pour la sélection.
ColumnHeaderSelect Cliquez sur une cellule pour la sélectionner. Cliquez sur un en-tête de colonne pour sélectionner l’intégralité de la colonne. Les en-têtes de colonne ne peuvent pas être utilisés pour le tri.
FullColumnSelect Cliquez sur une cellule ou un en-tête de colonne pour sélectionner l’intégralité de la colonne. Les en-têtes de colonne ne peuvent pas être utilisés pour le tri.
FullRowSelect Cliquer sur une cellule ou un en-tête de ligne sélectionne la ligne entière.
RowHeaderSelect Mode de sélection par défaut. Cliquez sur une cellule pour la sélectionner. Cliquer sur un en-tête de ligne sélectionne la ligne entière.

Remarque

La modification du mode de sélection au moment de l’exécution efface automatiquement la sélection actuelle.

Par défaut, les utilisateurs peuvent sélectionner plusieurs lignes, colonnes ou cellules en faisant glisser avec la souris, en appuyant sur Ctrl ou Maj lors de la sélection pour étendre ou modifier une sélection, ou en cliquant sur la cellule d’en-tête en haut à gauche pour sélectionner toutes les cellules du contrôle. Pour empêcher ce comportement, définissez la MultiSelect propriété sur false.

Les FullRowSelect modes RowHeaderSelect permettent aux utilisateurs de supprimer des lignes en les sélectionnant et en appuyant sur la touche DELETE. Les utilisateurs peuvent supprimer des lignes uniquement lorsque la cellule active n’est pas en mode édition, la AllowUserToDeleteRows propriété est définie truesur , et la source de données sous-jacente prend en charge la suppression de lignes pilotée par l’utilisateur. Notez que ces paramètres n’empêchent pas la suppression de ligne par programmation.

Sélection programmatique

Le mode de sélection actuel limite le comportement de la sélection programmatique, ainsi que la sélection de l’utilisateur. Vous pouvez modifier la sélection actuelle par programmation en définissant la Selected propriété de toutes les cellules, lignes ou colonnes présentes dans le DataGridView contrôle. Vous pouvez également sélectionner toutes les cellules du contrôle via la SelectAll méthode, en fonction du mode de sélection. Pour effacer la sélection, utilisez la ClearSelection méthode.

Si la MultiSelect propriété est définie truesur , vous pouvez ajouter DataGridView ou supprimer des éléments de la sélection en modifiant la Selected propriété de l’élément. Sinon, la définition de la Selected propriété pour true un élément supprime automatiquement d’autres éléments de la sélection.

Notez que la modification de la valeur de la CurrentCell propriété ne modifie pas la sélection actuelle.

Vous pouvez récupérer une collection des cellules, lignes ou colonnes actuellement sélectionnées via le SelectedCellsSelectedRowscontrôle et SelectedColumns les propriétés du DataGridView contrôle. L’accès à ces propriétés est inefficace lorsque chaque cellule du contrôle est sélectionnée. Pour éviter une pénalité de performances dans ce cas, utilisez d’abord la AreAllCellsSelected méthode. En outre, l’accès à ces collections pour déterminer le nombre de cellules, de lignes ou de colonnes sélectionnées peut être inefficace. Au lieu de cela, vous devez utiliser la méthode , GetRowCountou GetColumnCount la GetCellCountméthode, en passant la Selected valeur.

Conseil

Vous trouverez un exemple de code qui illustre l’utilisation programmatique de cellules sélectionnées dans la vue d’ensemble de la DataGridView classe.

Voir aussi