Mode virtuel dans le contrôle DataGridView Windows FormsVirtual Mode in the Windows Forms DataGridView Control

Avec le mode virtuel, vous pouvez gérer l’interaction entre le DataGridView contrôle et un cache de données personnalisé.With virtual mode, you can manage the interaction between the DataGridView control and a custom data cache. Pour implémenter le mode virtuel, affectez la VirtualMode propriété true et gérez un ou plusieurs des événements décrits dans cette rubrique.To implement virtual mode, set the VirtualMode property to true and handle one or more of the events described in this topic. Vous gérerez généralement au moins les CellValueNeeded événement, ce qui permet au contrôle de rechercher des valeurs dans le cache de données.You will typically handle at least the CellValueNeeded event, which enables the control look up values in the data cache.

Mode dépendant et Mode virtuelBound Mode and Virtual Mode

Mode virtuel est nécessaire uniquement lorsque vous avez besoin compléter ou remplacer le mode dépendant.Virtual mode is necessary only when you need to supplement or replace bound mode. En mode dépendant, vous définissez le DataSource propriété et le contrôle charge automatiquement les données à partir de la source spécifiée et soumet les modifications d’utilisateur de le.In bound mode, you set the DataSource property and the control automatically loads the data from the specified source and submits user changes back to it. Vous pouvez contrôler les colonnes liées sont affichés, et la source de données elle-même gère en général, les opérations telles que le tri.You can control which of the bound columns are displayed, and the data source itself typically handles operations such as sorting.

Complément du Mode dépendantSupplementing Bound Mode

Vous pouvez compléter le mode dépendant en affichant des colonnes indépendantes, ainsi que les colonnes dépendantes.You can supplement bound mode by displaying unbound columns along with the bound columns. Cela est parfois appelé « mode mixte » et est utile pour afficher des éléments comme des valeurs calculées ou l’interface utilisateur (IU) de contrôle.This is sometimes called "mixed mode" and is useful for displaying things like calculated values or user-interface (UI) controls.

Étant donné que les colonnes indépendantes sont en dehors de la source de données, elles sont ignorées par les opérations de tri de la source de données.Because unbound columns are outside the data source, they are ignored by the data source's sorting operations. 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 pour permettre la DataGridView contrôle interagir avec lui.Therefore, when you enable sorting in mixed mode, you must manage the unbound data in a local cache and implement virtual mode to let the DataGridView control interact with it.

Pour plus d’informations sur l’utilisation du mode virtuel pour gérer les valeurs dans les colonnes indépendantes, consultez les exemples dans le DataGridViewCheckBoxColumn.ThreeState propriété et System.Windows.Forms.DataGridViewComboBoxColumn rubriques de référence de classe.For more information about using virtual mode to maintain the values in unbound columns, see the examples in the DataGridViewCheckBoxColumn.ThreeState property and System.Windows.Forms.DataGridViewComboBoxColumn class reference topics.

Remplacement du Mode dépendantReplacing Bound Mode

Si le mode dépendant ne répond pas à vos besoins en performances, vous pouvez gérer toutes vos données dans un cache personnalisé via des gestionnaires d’événements de mode virtuel.If bound mode does not meet your performance needs, you can manage all your data in a custom cache through virtual-mode event handlers. Par exemple, vous pouvez utiliser le mode virtuel pour implémenter une mécanisme qui récupère uniquement de chargement de données juste-à-temps autant de données à partir d’une base de données en réseau est nécessaire pour des performances optimales.For example, you can use virtual mode to implement a just-in-time data loading mechanism that retrieves only as much data from a networked database as is necessary for optimal performance. Ce scénario est particulièrement utile lorsque vous travaillez avec grandes quantités de données sur une connexion réseau lente ou aux ordinateurs clients qui ont une quantité limitée de mémoire RAM d’espace de stockage.This scenario is particularly useful when working with large amounts of data over a slow network connection or with client machines that have a limited amount of RAM or storage space.

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 de DataGridView Windows Forms.For more information about using virtual mode in a just-in-time scenario, see Implementing Virtual Mode with Just-In-Time Data Loading in the Windows Forms DataGridView Control.

Événements de Mode virtuelVirtual-Mode Events

Si vos données sont en lecture seule, le CellValueNeeded événement peut être le seul événement que vous devrez gérer.If your data is read-only, the CellValueNeeded event may be the only event you will need to handle. Les événements de mode virtuel supplémentaires vous permettent d’activer des fonctionnalités spécifiques telles que la modification de l’utilisateur, ajout de ligne et la suppression et les transactions au niveau des lignes.Additional virtual-mode events let you enable specific functionality like user edits, row addition and deletion, and row-level transactions.

Certains standard DataGridView événements (tels que les événements qui se produisent lorsque les utilisateurs à ajouter ou suppriment des lignes ou lorsque des valeurs de cellules sont modifiées, analysés, validés ou mis en forme) sont utiles en mode virtuel.Some standard DataGridView events (such as events that occur when users add or delete rows, or when cell values are edited, parsed, validated, or formatted) are useful in virtual mode, as well. Vous pouvez également gérer les événements qui vous permettent de mettre à jour les valeurs généralement pas stockées dans une source de données, telles que le texte d’info-bulle de cellule, cellule texte d’erreur de ligne, cellule et données de menu contextuel de ligne et des données de hauteur de ligne.You can also handle events that let you maintain values not typically stored in a bound data source, such as cell ToolTip text, cell and row error text, cell and row shortcut menu data, and row height data.

Pour plus d’informations sur l’implémentation du mode virtuel pour gérer des 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 les Windows Forms DataGridView Control.For more information about implementing virtual mode to manage read/write data with a row-level commit scope, see Walkthrough: Implementing Virtual Mode in the Windows Forms DataGridView Control.

Pour obtenir un exemple qui implémente le mode virtuel avec une portée de validation de niveau cellule, consultez la VirtualMode rubrique de référence de propriété.For an example that implements virtual mode with a cell-level commit scope, see the VirtualMode property reference topic.

Les événements suivants se produisent uniquement lors de la VirtualMode propriété est définie sur true.The following events occur only when the VirtualMode property is set to true.

ÉvénementEvent DescriptionDescription
CellValueNeeded Utilisé par le contrôle pour récupérer une valeur de cellule dans le cache de données pour l’affichage.Used by the control to retrieve a cell value from the data cache for display. Cet événement se produit uniquement pour les cellules dans les colonnes indépendantes.This event occurs only for cells in unbound columns.
CellValuePushed Utilisé par le contrôle pour valider les entrées d’utilisateur pour une cellule dans le cache de données.Used by the control to commit user input for a cell to the data cache. Cet événement se produit uniquement pour les cellules dans les colonnes indépendantes.This event occurs only for cells in unbound columns.

Appelez le UpdateCellValue méthode lorsque vous modifiez une valeur mise en cache en dehors d’un CellValuePushed Gestionnaire d’événements pour garantir que la valeur actuelle est affichée dans le contrôle et appliquer des modes de dimensionnement automatique actuellement en vigueur.Call the UpdateCellValue method when changing a cached value outside of a CellValuePushed event handler to ensure that the current value is displayed in the control and to apply any automatic sizing modes currently in effect.
NewRowNeeded Utilisé par le contrôle pour indiquer la nécessité d’une nouvelle ligne dans le cache de données.Used by the control to indicate the need for a new row in the data cache.
RowDirtyStateNeeded Utilisé par le contrôle pour déterminer si une ligne comporte des modifications non validées.Used by the control to determine whether a row has any uncommitted changes.
CancelRowEdit Utilisé par le contrôle pour indiquer qu’une ligne doit rétablir ses valeurs mises en cache.Used by the control to indicate that a row should revert to its cached values.

Les événements suivants sont utiles en mode virtuel, mais peut être utilisées indépendamment de la VirtualMode paramètre de propriété.The following events are useful in virtual mode, but can be used regardless of the VirtualMode property setting.

ÉvénementsEvents DescriptionDescription
UserDeletingRow

UserDeletedRow

RowsRemoved

RowsAdded
Utilisé par le contrôle pour indiquer quand les lignes sont supprimées ou ajoutées, ce qui permet à jour le cache de données en conséquence.Used by the control to indicate when rows are deleted or added, letting you update the data cache accordingly.
CellFormatting

CellParsing

CellValidating

CellValidated

RowValidating

RowValidated
Utilisé par le contrôle aux valeurs des cellules de format pour l’affichage et à analyser et valider l’entrée utilisateur.Used by the control to format cell values for display and to parse and validate user input.
CellToolTipTextNeeded Utilisé par le contrôle pour extraire le texte d’info-bulle de cellule lorsque le DataSource propriété est définie ou la VirtualMode propriété est true.Used by the control to retrieve cell ToolTip text when the DataSource property is set or the VirtualMode property is true.

Info-bulles de cellule sont affichés uniquement lorsque le ShowCellToolTips valeur de propriété est true.Cell ToolTips are displayed only when the ShowCellToolTips property value is true.
CellErrorTextNeeded

RowErrorTextNeeded
Permet de récupérer le texte d’erreur de cellule ou la ligne par le contrôle lorsque la DataSource propriété est définie ou la VirtualMode propriété est true.Used by the control to retrieve cell or row error text when the DataSource property is set or the VirtualMode property is true.

Appelez le UpdateCellErrorText méthode ou le UpdateRowErrorText méthode lorsque vous modifiez le texte d’erreur de ligne ou cellule pour garantir que la valeur actuelle est affichée dans le contrôle.Call the UpdateCellErrorText method or the UpdateRowErrorText method when you change the cell or row error text to ensure that the current value is displayed in the control.

Les glyphes d’erreur de cellule et de ligne sont affichés lorsque la ShowCellErrors et ShowRowErrors sont des valeurs de propriété true.Cell and row error glyphs are displayed when the ShowCellErrors and ShowRowErrors property values are true.
CellContextMenuStripNeeded

RowContextMenuStripNeeded
Utilisé par le contrôle pour récupérer une ligne ou cellule ContextMenuStrip lorsque le contrôle DataSource propriété est définie ou la VirtualMode propriété est true.Used by the control to retrieve a cell or row ContextMenuStrip when the control DataSource property is set or the VirtualMode property is true.
RowHeightInfoNeeded

RowHeightInfoPushed
Utilisé par le contrôle à récupérer ou de stocker des informations de hauteur de ligne dans le cache de données.Used by the control to retrieve or store row height information in the data cache. Appelez le UpdateRowHeightInfo méthode lorsque vous modifiez les informations de hauteur de ligne mise en cache en dehors d’un RowHeightInfoPushed Gestionnaire d’événements pour vous assurer que la valeur actuelle est utilisée dans l’affichage du contrôle.Call the UpdateRowHeightInfo method when changing the cached row height information outside of a RowHeightInfoPushed event handler to ensure that the current value is used in the display of the control.

Meilleures pratiques en Mode virtuelBest Practices in Virtual Mode

Si vous implémentez le mode virtuel afin de fonctionner efficacement de grandes quantités de données, vous devez également vous assurer que vous utilisez efficacement le DataGridView contrôle lui-même.If you are implementing virtual mode in order to work efficiently with large amounts of data, you will also want to ensure that you are working efficiently with the DataGridView control itself. Pour plus d’informations sur l’utilisation efficace de styles de cellules, le dimensionnement automatique, des sélections et partage de lignes, consultez meilleures pratiques pour la mise à l’échelle le contrôle de DataGridView Windows Forms.For more information about the efficient use of cell styles, automatic sizing, selections, and row sharing, see Best Practices for Scaling the Windows Forms DataGridView Control.

Voir aussiSee also