Mode virtuel dans le contrôle DataGridView Windows Forms

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

Mode lié et mode virtuel

Le mode virtuel est nécessaire uniquement lorsque vous devez compléter ou remplacer le mode lié. En mode lié, vous définissez la DataSource propriété et le contrôle charge automatiquement les données à partir de la source spécifiée et soumet les modifications apportées par l’utilisateur. Vous pouvez contrôler quelles colonnes liées sont affichées et la source de données elle-même gère généralement les opérations telles que le tri.

Supplément du mode englobant

Vous pouvez compléter le mode lié en affichant des colonnes non liées avec les colonnes liées. Cela est parfois appelé « mode mixte » et est utile pour afficher des éléments tels que des valeurs calculées ou des contrôles d’interface utilisateur (UI).

Étant donné que les colonnes non liées se trouvent en dehors de la source de données, elles sont ignorées 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 non liées dans un cache local et implémenter le mode virtuel pour permettre au DataGridView contrôle d’interagir avec celui-ci.

Pour plus d’informations sur l’utilisation du mode virtuel pour conserver les valeurs dans des colonnes non liées, consultez les exemples des rubriques de référence sur les DataGridViewCheckBoxColumn.ThreeState propriétés et System.Windows.Forms.DataGridViewComboBoxColumn les classes.

Remplacement du mode englobant

Si le mode lié ne répond pas à vos besoins en matière de performances, vous pouvez gérer toutes vos données dans un cache personnalisé via des gestionnaires d’événements en 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 autant de données d’une base de données réseau que nécessaire pour des performances optimales. Ce scénario est particulièrement utile lors de l’utilisation de grandes quantités de données sur une connexion réseau lente ou avec des ordinateurs clients disposant d’une quantité limitée de RAM ou d’espace de stockage.

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 en mode virtuel

Si vos données sont en lecture seule, l’événement CellValueNeeded peut être le seul événement que vous devez gérer. Des événements en mode virtuel supplémentaires vous permettent d’activer des fonctionnalités spécifiques telles que les modifications utilisateur, l’ajout et la suppression de lignes et les transactions au niveau des lignes.

Certains événements standard DataGridView (tels que les événements qui se produisent lorsque les utilisateurs ajoutent ou suppriment des lignes, ou lorsque les valeurs de cellule 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 permettent de conserver des valeurs qui ne sont généralement pas stockées dans une source de données liée, comme le texte d’info-bulle de cellule, le texte d’erreur de cellule et de ligne, les données de menu contextuel 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 étendue de validation au niveau des lignes, 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 étendue de validation au niveau de la cellule, consultez la rubrique de référence sur les VirtualMode propriétés.

Les événements suivants se produisent uniquement lorsque la VirtualMode propriété est définie sur true.

Événement Description
CellValueNeeded Utilisé par le contrôle pour récupérer une valeur de cellule à partir du cache de données à afficher. Cet événement se produit uniquement pour les cellules dans des colonnes non liées.
CellValuePushed Utilisé par le contrôle pour valider l’entrée utilisateur d’une cellule dans le cache de données. Cet événement se produit uniquement pour les cellules dans des colonnes non liées.

Appelez la méthode lors de la UpdateCellValue modification d’une valeur mise en cache en dehors d’un gestionnaire d’événements CellValuePushed pour vous assurer que la valeur actuelle est affichée dans le contrôle et pour appliquer tous les modes de dimensionnement automatique actuellement en vigueur.
NewRowNeeded Utilisé par le contrôle pour indiquer la nécessité d’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 revenir à ses valeurs mises en cache.

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

Événements Description
UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded
Utilisé par le contrôle pour indiquer quand les lignes sont supprimées ou ajoutées, ce qui vous permet de mettre à jour le cache de données en conséquence.
CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated
Utilisé par le contrôle pour mettre en forme les valeurs de cellule pour l’affichage et l’analyse et valider l’entrée utilisateur.
CellToolTipTextNeeded Utilisé par le contrôle pour récupérer le texte de l’info-bulle de cellule lorsque la DataSource propriété est définie ou que la VirtualMode propriété est true.

Cell Tool Astuces sont affichés uniquement lorsque la valeur de la ShowCellToolTips propriété est true.
CellErrorTextNeeded

RowErrorTextNeeded
Utilisé par le contrôle pour récupérer le texte d’erreur de cellule ou de ligne lorsque la DataSource propriété est définie ou que la VirtualMode propriété est true.

Appelez la UpdateCellErrorText méthode ou la UpdateRowErrorText méthode lorsque vous modifiez le texte d’erreur de cellule ou de ligne pour vous assurer que la valeur actuelle est affichée dans le contrôle.

Les glyphes d’erreur de cellule et de ligne s’affichent lorsque les valeurs des propriétés et ShowRowErrors des ShowCellErrors valeurs sont true.
CellContextMenuStripNeeded

RowContextMenuStripNeeded
Utilisé par le contrôle pour récupérer une cellule ou une ligne ContextMenuStrip lorsque la propriété de contrôle DataSource est définie ou que la VirtualMode propriété est true.
RowHeightInfoNeeded

RowHeightInfoPushed
Utilisé par le contrôle pour récupérer ou stocker des informations de hauteur de ligne dans le cache de données. Appelez la UpdateRowHeightInfo méthode lors de la modification des informations de hauteur de ligne mise en cache en dehors d’un gestionnaire d’événements RowHeightInfoPushed pour vous assurer que la valeur actuelle est utilisée dans l’affichage du contrôle.

Meilleures pratiques en mode virtuel

Si vous implémentez le mode virtuel pour fonctionner efficacement avec de grandes quantités de données, vous devez également vous assurer que vous travaillez efficacement avec le DataGridView contrôle lui-même. Pour plus d’informations sur l’utilisation efficace des styles de cellule, du dimensionnement automatique, des sélections et du partage de lignes, consultez Les meilleures pratiques pour la mise à l’échelle du contrôle DataGridView Windows Forms.

Voir aussi