Partager via


Mode virtuel dans le contrôle DataGridView Windows Forms

Avec le mode virtuel, vous pouvez gérer l'interaction entre le contrôle DataGridView et un cache de données personnalisé. Pour implémenter le mode virtuel, attribuez à la propriété VirtualMode la valeur true et gérez un ou plusieurs des événements décrits dans cette rubrique. Vous gérerez en général au moins l'événement CellValueNeeded, qui permet au contrôle de rechercher les valeurs dans le cache de données.

Mode dépendant et mode virtuel

Le mode virtuel est nécessaire uniquement lorsque vous devez compléter ou remplacer le mode dépendant. En mode dépendant, vous définissez la propriété DataSource et le contrôle charge automatiquement les données à partir de la source spécifiée et lui soumet les modifications de l'utilisateur. Vous pouvez déterminer les colonnes dépendantes qui sont affichées, et la source de données elle-même gère en général des opérations telles que le tri.

Complément du mode dépendant

Vous pouvez compléter le mode dépendant en affichant des colonnes indépendantes avec les colonnes dépendantes. Ceci est appelé quelquefois le « mode mixte » et est utile pour afficher des éléments comme les valeurs calculées ou des contrôles d'interface utilisateur.

Comme les colonnes indépendantes se situent en dehors de la source de données, ils sont ignorés par les opérations de tri de la source de données. Par conséquent, lorsque vous activez le tri en mode mixte, vous devez gérer les données indépendantes dans un cache local et implémenter le mode virtuel afin de laisser le contrôle DataGridView interagir avec lui.

Pour plus d'informations sur l'utilisation du mode virtuel pour gérer les valeurs dans les colonnes indépendantes, consultez les exemples dans les rubriques de référence de la propriété DataGridViewCheckBoxColumn.ThreeState et de classe System.Windows.Forms.DataGridViewComboBoxColumn.

Remplacement du mode dépendant

Si le mode dépendant ne répond pas vos besoins en termes de performances, vous pouvez gérer toutes vos données dans un cache personnalisé via des gestionnaires d'événements de mode virtuel. Par exemple, vous pouvez utiliser le mode virtuel pour implémenter un mécanisme de chargement de données juste-à-temps qui récupère uniquement les données nécessaires d'une base de données de réseau afin d'optimiser les performances. Ce scénario est particulièrement utile lorsque vous manipulez de grandes quantités de données sur une connexion réseau lente ou utilisez des ordinateurs clients qui disposent d'une quantité limitée de RAM ou d'espace de rangement.

Pour plus d'informations sur l'utilisation du mode virtuel dans un scénario juste-à-temps, consultez Implémentation du mode virtuel avec le chargement de données juste-à-temps dans le contrôle DataGridView Windows Forms.

Événements de mode virtuel

Si vos données sont en lecture seule, l'événement CellValueNeeded peut être le seul événement que vous devrez gérer. Les événements de mode virtuel supplémentaires vous permettent d'activer des fonctionnalités spécifiques comme les modifications des utilisateurs, l'ajout et la suppression de lignes, et les transactions de niveau de ligne.

Certains événements DataGridView standard (tels que les événements qui se produisent lorsque les utilisateurs ajoutent ou suppriment des lignes, ou lorsque des valeurs de cellules sont modifiées, analysées, validées ou mises en forme) sont également utiles en mode virtuel. Vous pouvez également gérer les événements qui vous laissent manipuler des valeurs qui ne sont pas généralement stockées dans une source de données liée, telles que le texte d'info-bulle de cellule, le texte d'erreur de cellule et de ligne, les données des menus contextuels de cellule et de ligne et les données de hauteur de ligne.

Pour plus d'informations sur l'implémentation du mode virtuel pour gérer les données en lecture/écriture avec une portée de validation au niveau de la ligne, consultez Procédure pas à pas : implémentation du mode virtuel dans le contrôle DataGridView Windows Forms.

Pour obtenir un exemple qui implémente le mode virtuel avec une portée de validation de niveau cellule, consultez la rubrique de référence de la propriété VirtualMode.

Les événements suivants se produisent uniquement lorsque la propriété VirtualMode a la valeur true.

Événement

Description

CellValueNeeded

Utilisé par le contrôle pour extraire une valeur de la cellule du cache de données pour l'affichage. Cet événement se produit uniquement pour les cellules dans les colonnes indépendantes.

CellValuePushed

Utilisé par le contrôle pour valider l'entrée d'utilisateur pour une cellule dans le cache de données. Cet événement se produit uniquement pour les cellules dans les colonnes indépendantes.

Appelez la méthode UpdateCellValue lors de la modification d'une valeur mise en cache en dehors d'un gestionnaire d'événements CellValuePushed afin de faire en sorte que la valeur actuelle soit affichée dans le contrôle et appliquer tous modes de dimensionnement automatiques actuellement en vigueur.

NewRowNeeded

Utilisé par le contrôle pour indiquer le besoin pour une nouvelle ligne dans le cache de données.

RowDirtyStateNeeded

Utilisé par le contrôle pour déterminer si une ligne a des modifications non validées.

CancelRowEdit

Utilisé par le contrôle pour indiquer qu'une ligne doit être rétablie à ses valeurs mises en cache.

Les événements suivants sont utiles en mode virtuel, mais peuvent être utilisés indépendamment du paramètre de propriété VirtualMode.

Événements

Description

UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded

Utilisés par le contrôle pour indiquer quand des lignes sont supprimées ou ajoutées, vous laissant ainsi mettre à jour le cache de données en conséquence.

CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated

Utilisés par le contrôle pour mettre en forme des valeurs de cellules pour l'affichage et pour analyser et valider l'entrée d'utilisateur.

CellToolTipTextNeeded

Utilisés par le contrôle pour extraire le texte d'info-bulle de la cellule lorsque la propriété DataSource est définie ou lorsque la propriété VirtualMode a la valeur true.

Les info-bulles de cellule sont affichées uniquement lorsque la valeur de propriété ShowCellToolTips a la propriété true.

CellErrorTextNeeded

RowErrorTextNeeded

Utilisés par le contrôle pour extraire le texte d'erreur de cellule ou de ligne lorsque la propriété DataSource est définie ou lorsque la propriété VirtualMode a la valeur true.

Appelez la méthode UpdateCellErrorText ou la méthode UpdateRowErrorText lorsque vous modifiez le texte d'erreur de ligne ou de cellule afin de faire en sorte que la valeur actuelle soit affichée dans le contrôle.

Les glyphes d'erreur de ligne et de cellule sont affichés lorsque les propriétés ShowCellErrors et ShowRowErrors ont la valeur true.

CellContextMenuStripNeeded

RowContextMenuStripNeeded

Utilisés par le contrôle pour extraire une cellule ou une ligne ContextMenuStrip lorsque la propriété DataSource de contrôle est définie ou la propriété VirtualMode a la valeur true.

RowHeightInfoNeeded

RowHeightInfoPushed

Utilisés par le contrôle pour extraire ou stocker des informations de hauteur de ligne dans le cache de données. Appelez la méthode UpdateRowHeightInfo lors de la modification des informations de hauteur de ligne mises en cache en dehors d'un gestionnaire d'événements RowHeightInfoPushed afin de faire en sorte que la valeur actuelle soit utilisée dans l'affichage du contrôle.

Méthodes conseillées en mode virtuel

Si vous implémentez le mode virtuel afin de manipuler efficacement de grandes quantités de données, vous souhaiterez également garantir que vous travaillerez efficacement avec le contrôle DataGridView lui-même. Pour plus d'informations sur l'utilisation efficace de styles de cellule, du dimensionnement automatique, des sélections et du partage de lignes, consultez Meilleures pratiques pour la mise à l'échelle du contrôle DataGridView Windows Forms.

Voir aussi

Tâches

Procédure pas à pas : implémentation du mode virtuel dans le contrôle DataGridView Windows Forms

Référence

DataGridView

VirtualMode

Concepts

Meilleures pratiques pour la mise à l'échelle du contrôle DataGridView Windows Forms

Implémentation du mode virtuel avec le chargement de données juste-à-temps dans le contrôle DataGridView Windows Forms

Autres ressources

Réglage des performances dans le contrôle DataGridView Windows Forms