Options de dimensionnement dans le contrôle DataGridView Windows FormsSizing Options in the Windows Forms DataGridView Control

DataGridViewles lignes, les colonnes et les en-têtes peuvent changer de taille à la suite de nombreuses occurrences différentes.DataGridView rows, columns, and headers can change size as a result of many different occurrences. Le tableau suivant présente ces occurrences.The following table shows these occurrences.

OccurrenceOccurrence DescriptionDescription
Redimensionnement de l’utilisateurUser resize Les utilisateurs peuvent effectuer des ajustements de taille en faisant glisser ou en double-cliquant sur des séparateurs de ligne, de colonne ou d’en-tête.Users can make size adjustments by dragging or double-clicking row, column, or header dividers.
Redimensionnement du contrôleControl resize En mode de remplissage de colonne, les largeurs de colonne changent lorsque la largeur du contrôle change; par exemple, lorsque le contrôle est ancré à son formulaire parent et que l’utilisateur redimensionne le formulaire.In column fill mode, column widths change when the control width changes; for example, when the control is docked to its parent form and the user resizes the form.
Modification de la valeur de la celluleCell value change En mode de dimensionnement automatique basé sur le contenu, les tailles changent en fonction des nouvelles valeurs d’affichage.In content-based automatic sizing modes, sizes change to fit new display values.
Appel de méthodeMethod call Le redimensionnement basé sur le contenu par programme vous permet d’effectuer des ajustements de taille opportunistes en fonction des valeurs de cellule au moment de l’appel de la méthode.Programmatic content-based resizing lets you make opportunistic size adjustments based on cell values at the time of the method call.
Paramètre de propriétéProperty setting Vous pouvez également définir des valeurs de hauteur et de largeur spécifiques.You can also set specific height and width values.

Par défaut, le redimensionnement de l’utilisateur est activé, le dimensionnement automatique est désactivé et les valeurs de cellule qui sont plus larges que leurs colonnes sont découpées.By default, user resizing is enabled, automatic sizing is disabled, and cell values that are wider than their columns are clipped.

Le tableau suivant répertorie les scénarios que vous pouvez utiliser pour ajuster le comportement par défaut ou pour utiliser des options de dimensionnement spécifiques afin d’obtenir des effets particuliers.The following table shows scenarios that you can use to adjust the default behavior or to use specific sizing options to achieve particular effects.

ScénarioScenario ImplémentationImplementation
Utilisez le mode de remplissage de colonne pour afficher des données de taille similaire dans un nombre relativement faible de colonnes qui occupent toute la largeur du contrôle sans afficher la barre de défilement horizontale.Use column fill mode for displaying similarly sized data in a relatively small number of columns that occupy the entire width of the control without displaying the horizontal scroll bar. Affectez à la propriété AutoSizeColumnsMode la valeur Fill.Set the AutoSizeColumnsMode property to Fill.
Utilisez le mode de remplissage de colonne avec des valeurs d’affichage de tailles différentes.Use column fill mode with display values of varying sizes. Affectez à la propriété AutoSizeColumnsMode la valeur Fill.Set the AutoSizeColumnsMode property to Fill. Initialisez les largeurs de colonne relatives en définissant les propriétés de colonne FillWeight ou en appelant la méthode de contrôle AutoResizeColumns après avoir rempli le contrôle avec des données.Initialize relative column widths by setting the column FillWeight properties or by calling the control AutoResizeColumns method after filling the control with data.
Utilisez le mode de remplissage de colonne avec des valeurs d’importance variable.Use column fill mode with values of varying importance. Affectez à la propriété AutoSizeColumnsMode la valeur Fill.Set the AutoSizeColumnsMode property to Fill. Définissez des MinimumWidth valeurs élevées pour les colonnes qui doivent toujours afficher certaines de leurs données ou utilisez une option de dimensionnement autre que le mode de remplissage pour des colonnes spécifiques.Set large MinimumWidth values for columns that must always display some of their data or use a sizing option other than fill mode for specific columns.
Utilisez le mode de remplissage de colonne pour éviter d’afficher l’arrière-plan du contrôle.Use column fill mode to avoid displaying the control background. Affectez AutoSizeMode à Fill la propriété de la dernière colonne la valeur et utilisez d’autres options de dimensionnement pour les autres colonnes.Set the AutoSizeMode property of the last column to Fill and use other sizing options for the other columns. Si les autres colonnes utilisent une trop grande partie de l’espace disponible, MinimumWidth définissez la propriété de la dernière colonne.If the other columns use too much of the available space, set the MinimumWidth property of the last column.
Affichez une colonne de largeur fixe, telle qu’une colonne d’icône ou d’ID.Display a fixed-width column, such as an icon or ID column. Affectez None à Resizable la False valeur AutoSizeMode et à pour la colonne.Set AutoSizeMode to None and Resizable to False for the column. Initialisez sa largeur en définissant Width la propriété ou en appelant la AutoResizeColumn méthode de contrôle après avoir rempli le contrôle avec des données.Initialize its width by setting the Width property or by calling the control AutoResizeColumn method after filling the control with data.
Ajustez les tailles automatiquement chaque fois que le contenu des cellules change pour éviter le découpage et pour optimiser l’utilisation de l’espace.Adjust sizes automatically whenever cell contents change to avoid clipping and to optimize the use of space. Affectez à une propriété de dimensionnement automatique une valeur qui représente un mode de dimensionnement basé sur le contenu.Set an automatic sizing property to a value that represents a content-based sizing mode. Pour éviter une altération des performances lorsque vous travaillez avec de grandes quantités de données, utilisez un mode de dimensionnement qui calcule uniquement les lignes affichées.To avoid a performance penalty when working with large amounts of data, use a sizing mode that calculates displayed rows only.
Ajustez les tailles pour ajuster les valeurs aux lignes affichées afin d’éviter des pénalités en matière de performances lorsque vous travaillez avec de nombreuses lignes.Adjust sizes to fit values in displayed rows to avoid performance penalties when working with many rows. Utilisez les valeurs d’énumération du mode de redimensionnement appropriées avec un redimensionnement automatique ou par programme.Use the appropriate sizing-mode enumeration values with automatic or programmatic resizing. Pour ajuster les tailles en fonction des valeurs des lignes récemment affichées lors du défilement, appelez une méthode de redimensionnement dans un Scroll gestionnaire d’événements.To adjust sizes to fit values in newly displayed rows while scrolling, call a resizing method in a Scroll event handler. Pour personnaliser le redimensionnement du double-clic de l’utilisateur afin que seules les valeurs des lignes affichées déterminent les nouvelles tailles, RowDividerDoubleClick appelez ColumnDividerDoubleClick une méthode de redimensionnement dans un gestionnaire d’événements ou.To customize user double-click resizing so that only values in displayed rows determine the new sizes, call a resizing method in a RowDividerDoubleClick or ColumnDividerDoubleClick event handler.
Ajustez les tailles en fonction du contenu des cellules uniquement à des moments précis pour éviter des pénalités en matière de performances ou pour permettre le redimensionnement de l’utilisateur.Adjust sizes to fit cell contents only at specific times to avoid performance penalties or to enable user resizing. Appeler une méthode de redimensionnement basée sur le contenu dans un gestionnaire d’événements.Call a content-based resizing method in an event handler. Par exemple, utilisez l' DataBindingComplete événement pour initialiser les tailles après la liaison, et CellValidated gérez CellValueChanged l’événement ou pour ajuster les tailles afin de compenser les modifications utilisateur ou les modifications apportées à une source de données liée.For example, use the DataBindingComplete event to initialize sizes after binding, and handle the CellValidated or CellValueChanged event to adjust sizes to compensate for user edits or changes in a bound data source.
Ajustez les hauteurs de lignes pour le contenu des cellules multiligne.Adjust row heights for multiline cell contents. Veillez à ce que les largeurs de colonne soient appropriées pour afficher des paragraphes de texte et utilisez le dimensionnement de ligne automatique ou par programme pour ajuster les hauteurs.Ensure that column widths are appropriate for displaying paragraphs of text and use automatic or programmatic content-based row sizing to adjust the heights. Assurez-vous également que les cellules avec du contenu WrapMode multiligne sont affichées à Truel’aide d’une valeur de style de cellule.Also ensure that cells with multiline content are displayed using a WrapMode cell style value of True.

En général, vous allez utiliser un mode de redimensionnement de colonne automatique pour conserver les largeurs de colonne ou les définir sur des largeurs spécifiques avant que les hauteurs de lignes soient ajustées.Typically, you will use an automatic column sizing mode to maintain column widths or set them to specific widths before row heights are adjusted.

Redimensionnement avec la sourisResizing with the Mouse

Par défaut, les utilisateurs peuvent redimensionner des lignes, des colonnes et des en-têtes qui n’utilisent pas de mode de dimensionnement automatique en fonction des valeurs de cellule.By default, users can resize rows, columns, and headers that do not use an automatic sizing mode based on cell values. Pour empêcher les utilisateurs de redimensionner avec d’autres modes, tels que le mode de remplissage de colonne, définissez DataGridView une ou plusieurs des propriétés suivantes:To prevent users from resizing with other modes, such as column fill mode, set one or more of the following DataGridView properties:

Vous pouvez également empêcher les utilisateurs de redimensionner des lignes ou des colonnes Resizable individuelles en définissant leurs propriétés.You can also prevent users from resizing individual rows or columns by setting their Resizable properties. Par défaut, la Resizable valeur de la propriété est basée AllowUserToResizeColumns sur la valeur de la propriété AllowUserToResizeRows pour les colonnes et sur la valeur de la propriété pour les lignes.By default, the Resizable property value is based on the AllowUserToResizeColumns property value for columns and the AllowUserToResizeRows property value for rows. Toutefois, si vous Resizable définissez True explicitement Falsesur ou, la valeur spécifiée remplace la valeur du contrôle pour cette ligne ou cette colonne.If you explicitly set Resizable to True or False, however, the specified value overrides the control value is for that row or column. Affectez la valeur Resizable pourrestaurerl’héritage.NotSetSet Resizable to NotSet to restore the inheritance.

Comme NotSet restaure l’héritage de valeur, la Resizable propriété ne retourne jamais de NotSet valeur, sauf si la ligne ou la colonne n’a pas DataGridView été ajoutée à un contrôle.Because NotSet restores the value inheritance, the Resizable property will never return a NotSet value unless the row or column has not been added to a DataGridView control. Si vous devez déterminer si la Resizable valeur de propriété d’une ligne ou d’une colonne est héritée, examinez sa State propriété.If you need to determine whether the Resizable property value of a row or column is inherited, examine its State property. Si la State valeur comprend l' ResizableSet indicateur, la Resizable valeur de la propriété n’est pas héritée.If the State value includes the ResizableSet flag, the Resizable property value is not inherited.

Dimensionnement automatiqueAutomatic Sizing

Il existe deux types de dimensionnement automatique dans DataGridView le contrôle: le mode de remplissage de colonne et le dimensionnement automatique basé sur le contenu.There are two kinds of automatic sizing in the DataGridView control: column fill mode and content-based automatic sizing.

En mode de remplissage de colonne, les colonnes visibles dans le contrôle remplissent la largeur de la zone d’affichage du contrôle.Column fill mode causes the visible columns in the control to fill the width of the control's display area. Pour plus d’informations sur ce mode, consultez mode de remplissage des colonnes dans le contrôle DataGridView Windows Forms.For more information about this mode, see Column Fill Mode in the Windows Forms DataGridView Control.

Vous pouvez également configurer des lignes, des colonnes et des en-têtes pour ajuster automatiquement leur taille en fonction du contenu de leurs cellules.You can also configure rows, columns, and headers to automatically adjust their sizes to fit their cell contents. Dans ce cas, l’ajustement de la taille se produit chaque fois que le contenu de la cellule change.In this case, size adjustment occurs whenever cell contents change.

Notes

Si vous conservez des valeurs de cellule dans un cache de données personnalisé à l’aide du mode virtuel, le dimensionnement automatique se produit lorsque l’utilisateur modifie une valeur de cellule, mais ne se CellValuePushed produit pas lorsque vous modifiez une valeur mise en cache en dehors d’un gestionnaire d’événements.If you maintain cell values in a custom data cache using virtual mode, automatic sizing occurs when the user edits a cell value but does not occur when you alter a cached value outside of a CellValuePushed event handler. Dans ce cas, appelez la UpdateCellValue méthode pour forcer le contrôle à mettre à jour l’affichage de la cellule et à appliquer les modes de dimensionnement automatique actuels.In this case, call the UpdateCellValue method to force the control to update the cell display and apply the current automatic sizing modes.

Si le dimensionnement automatique basé sur le contenu est activé pour une seule dimension, c’est-à-dire pour les lignes mais pas pour les colonnes, ou pour les colonnes WrapMode mais pas pour les lignes, et est également activé, le réglage de la taille se produit également lorsque l’autre dimension change.If content-based automatic sizing is enabled for one dimension only—that is, for rows but not columns, or for columns but not rows—and WrapMode is also enabled, size adjustment also occurs whenever the other dimension changes. Par exemple, si les lignes mais pas les colonnes sont configurées pour WrapMode le dimensionnement automatique et sont activées, les utilisateurs peuvent faire glisser les séparateurs de colonne pour modifier la largeur d’une colonne et les hauteurs de lignes s’ajustent automatiquement afin que le contenu des cellules soit toujours affiché entièrement.For example, if rows but not columns are configured for automatic sizing and WrapMode is enabled, users can drag column dividers to change the width of a column and row heights will automatically adjust so that cell contents are still fully displayed.

Si vous configurez les lignes et les colonnes pour le dimensionnement WrapMode automatique basé sur le DataGridView contenu et que est activé, le contrôle ajuste la taille chaque fois que le contenu de la cellule est modifié et utilise un rapport hauteur/largeur de cellule idéal pour calculer les nouvelles tailles.If you configure both rows and columns for content-based automatic sizing and WrapMode is enabled, the DataGridView control will adjust sizes whenever cell contents changed and will use an ideal cell height-to-width ratio when calculating new sizes.

Pour configurer le mode de dimensionnement pour les en-têtes et les lignes et pour les colonnes qui ne substituent pas la valeur du contrôle, DataGridView définissez une ou plusieurs des propriétés suivantes:To configure the sizing mode for headers and rows and for columns that do not override the control value, set one or more of the following DataGridView properties:

Pour remplacer le mode de redimensionnement de colonne du contrôle pour une colonne individuelle AutoSizeMode , affectez à sa propriété NotSetune valeur autre que.To override the control's column sizing mode for an individual column, set its AutoSizeMode property to a value other than NotSet. Le mode de dimensionnement d’une colonne est effectivement déterminé InheritedAutoSizeMode par sa propriété.The sizing mode for a column is actually determined by its InheritedAutoSizeMode property. La valeur de cette propriété est basée sur la valeur de AutoSizeMode la propriété de la colonne, NotSetsauf si cette valeur est, auquel AutoSizeColumnsMode cas la valeur du contrôle est héritée.The value of this property is based on the column's AutoSizeMode property value unless that value is NotSet, in which case the control's AutoSizeColumnsMode value is inherited.

Utilisez le redimensionnement automatique basé sur le contenu avec précaution lorsque vous travaillez avec de grandes quantités de données.Use content-based automatic resizing with caution when working with large amounts of data. Pour éviter des pénalités en matière de performances, utilisez les modes de dimensionnement automatique qui calculent les tailles en fonction uniquement des lignes affichées au lieu d’analyser chaque ligne du contrôle.To avoid performance penalties, use the automatic sizing modes that calculate sizes based only on the displayed rows rather than analyzing every row in the control. Pour des performances optimales, utilisez le redimensionnement par programme à la place afin de pouvoir le redimensionner à des moments spécifiques, par exemple immédiatement après le chargement de nouvelles données.For maximum performance, use programmatic resizing instead so that you can resize at specific times, such as immediately after new data is loaded.

Les modes de dimensionnement automatique basés sur le contenu n’affectent pas les lignes, les colonnes ou les en-têtes que vous avez Visible masqués en définissant la propriété falsede ligne ou de colonne ou RowHeadersVisible le ou les ColumnHeadersVisible propriétés sur.Content-based automatic sizing modes do not affect rows, columns, or headers that you have hidden by setting the row or column Visible property or the control RowHeadersVisible or ColumnHeadersVisible properties to false. Par exemple, si une colonne est masquée après avoir été automatiquement dimensionnée pour s’ajuster à une grande valeur de cellule, la colonne masquée ne modifie pas sa taille si la ligne contenant la valeur de cellule volumineuse est supprimée.For example, if a column is hidden after it is automatically sized to fit a large cell value, the hidden column will not change its size if the row containing the large cell value is deleted. Le dimensionnement automatique ne se produit pas lorsque la visibilité change. Visible par conséquent, true la modification de la propriété de colonne en ne force pas le calcul de la taille en fonction de son contenu actuel.Automatic sizing does not occur when visibility changes, so changing the column Visible property back to true will not force it to recalculate its size based on its current contents.

Le redimensionnement basé sur le contenu par programme affecte les lignes, les colonnes et les en-têtes, quelle que soit leur visibilité.Programmatic content-based resizing affects rows, columns, and headers regardless of their visibility.

Redimensionnement par programmationProgrammatic Resizing

Lorsque le dimensionnement automatique est désactivé, vous pouvez définir par programmation la largeur ou la hauteur exacte des lignes, des colonnes ou des en-têtes à l’aide des propriétés suivantes:When automatic sizing is disabled, you can programmatically set the exact width or height of rows, columns, or headers through the following properties:

Vous pouvez également redimensionner par programmation des lignes, des colonnes et des en-têtes pour les adapter à leur contenu à l’aide des méthodes suivantes:You can also programmatically resize rows, columns, and headers to fit their contents using the following methods:

Ces méthodes redimensionnent les lignes, les colonnes ou les en-têtes une seule fois, au lieu de les configurer pour un redimensionnement continu.These methods will resize rows, columns, or headers once rather than configuring them for continuous resizing. Les nouvelles tailles sont calculées automatiquement pour afficher tout le contenu des cellules sans découpage.The new sizes are automatically calculated to display all cell contents without clipping. Lorsque vous redimensionnez des colonnes qui ont InheritedAutoSizeMode des valeurs de propriété de, toutefois, les largeurs calculées par le contenu sont utilisées pour ajuster proportionnellement les valeurs de propriété de Fillcolonne FillWeight , et les largeurs de colonnes en fait ensuite calculé en fonction de ces nouvelles proportions afin que toutes les colonnes remplissent la zone d’affichage disponible du contrôle.When you programmatically resize columns that have InheritedAutoSizeMode property values of Fill, however, the calculated content-based widths are used to proportionally adjust the column FillWeight property values, and the actually column widths are then calculated according to these new proportions so that all columns fill the available display area of the control.

Le redimensionnement par programmation est utile pour éviter des pénalités en matière de performances avec redimensionnement continu.Programmatic resizing is useful to avoid performance penalties with continuous resizing. Il est également utile de fournir des tailles initiales pour les lignes, les colonnes et les en-têtes redimensionnables par l’utilisateur, ainsi que pour le mode de remplissage de colonne.It is also useful to provide initial sizes for user-resizable rows, columns, and headers, and for column fill mode.

En général, vous appelez les méthodes de redimensionnement par programmation à des moments spécifiques.You will typically call the programmatic resizing methods at specific times. Par exemple, vous pouvez redimensionner par programmation toutes les colonnes immédiatement après le chargement des données, ou vous pouvez redimensionner par programmation une ligne spécifique après la modification d’une valeur de cellule particulière.For example, you might programmatically resize all columns immediately after loading data, or you might programmatically resize a specific row after a particular cell value has been modified.

Personnalisation du comportement de dimensionnement basé sur le contenuCustomizing Content-based Sizing Behavior

Vous pouvez personnaliser les comportements de dimensionnement lorsque vous DataGridView travaillez avec des types de cellules, de lignes et de DataGridViewCell.GetPreferredSizecolonnes DataGridViewRow.GetPreferredHeightdérivés DataGridViewColumn.GetPreferredWidth en substituant les méthodes, ou en appelant des surcharges de DataGridView méthode de redimensionnement protégées dans un dérivé régulation.You can customize sizing behaviors when working with derived DataGridView cell, row, and column types by overriding the DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight, or DataGridViewColumn.GetPreferredWidth methods or by calling protected resizing method overloads in a derived DataGridView control. Les surcharges de méthode de redimensionnement protégées sont conçues pour fonctionner par paires afin d’obtenir un rapport hauteur/largeur de cellule idéal, évitant les cellules trop larges ou de hauteur.The protected resizing method overloads are designed to work in pairs to achieve an ideal cell height-to-width ratio, avoiding overly wide or tall cells. Par exemple, si vous appelez la AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) surcharge de la AutoResizeRows méthode et que vous false transmettez une valeur pour Boolean le paramètre, la surcharge calcule la hauteur et la largeur idéales pour les cellules de la ligne, mais elle ajuste les hauteurs de lignes ne.For example, if you call the AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) overload of the AutoResizeRows method and pass in a value of false for the Boolean parameter, the overload will calculate the ideal heights and widths for cells in the row, but it will adjust the row heights only. Vous devez ensuite appeler la AutoResizeColumns méthode pour ajuster les largeurs de colonne à l’idéal calculé.You must then call the AutoResizeColumns method to adjust the column widths to the calculated ideal.

Options de dimensionnement basées sur le contenuContent-based Sizing Options

Les énumérations utilisées par les propriétés et les méthodes de dimensionnement ont des valeurs similaires pour le dimensionnement basé sur le contenu.The enumerations used by sizing properties and methods have similar values for content-based sizing. Avec ces valeurs, vous pouvez limiter les cellules qui sont utilisées pour calculer les tailles préférées.With these values, you can limit which cells are used to calculate the preferred sizes. Pour toutes les énumérations de dimensionnement, les valeurs dont les noms font référence aux cellules affichées limitent leurs calculs aux cellules des lignes affichées.For all sizing enumerations, values with names that refer to displayed cells limit their calculations to cells in displayed rows. L’exclusion de lignes est utile pour éviter une altération des performances lorsque vous travaillez avec une grande quantité de lignes.Excluding rows is useful to avoid a performance penalty when you are working with a large quantity of rows. Vous pouvez également limiter les calculs aux valeurs de cellule dans les cellules d’en-tête ou autres.You can also restrict calculations to cell values in header or nonheader cells.

Voir aussiSee also