Opzioni di ridimensionamento nel controllo DataGridView Windows FormSizing Options in the Windows Forms DataGridView Control

DataGridView le righe, colonne e intestazioni possono modificare le dimensioni in seguito a diverse occorrenze.DataGridView rows, columns, and headers can change size as a result of many different occurrences. La tabella seguente illustra tali occorrenze.The following table shows these occurrences.

OccorrenzaOccurrence DescrizioneDescription
Ridimensionamento di utenteUser resize Gli utenti possono effettuare ridimensionamenti trascinando o facendo doppio clic sui separatori di riga o colonna intestazione.Users can make size adjustments by dragging or double-clicking row, column, or header dividers.
Ridimensionamento dei controlliControl resize Nella modalità di riempimento di colonna, la larghezza delle colonne di modificare la larghezza del controllo cambia; ad esempio, quando il controllo viene ancorato al form padre e l'utente ridimensiona il form.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.
Modifica del valore della cellaCell value change In modalità di ridimensionamento automatico basato sul contenuto, le dimensioni variano in funzione dei nuovi valori visualizzati.In content-based automatic sizing modes, sizes change to fit new display values.
Chiamata al metodoMethod call Ridimensionamento di basata sul contenuto a livello di codice consente di rendere ridimensionamenti opportunistici in base ai valori di cella al momento della chiamata al metodo.Programmatic content-based resizing lets you make opportunistic size adjustments based on cell values at the time of the method call.
Impostazione della proprietàProperty setting È inoltre possibile impostare i valori di larghezza e altezza.You can also set specific height and width values.

Per impostazione predefinita, il ridimensionamento dell'utente è abilitato, il ridimensionamento automatico è disabilitato e i valori delle celle con dimensioni maggiori rispetto alle colonne vengono tagliati.By default, user resizing is enabled, automatic sizing is disabled, and cell values that are wider than their columns are clipped.

Nella tabella seguente vengono illustrati scenari che è possibile utilizzare per regolare il comportamento predefinito o da utilizzare specifiche opzioni di ridimensionamento per ottenere effetti particolari.The following table shows scenarios that you can use to adjust the default behavior or to use specific sizing options to achieve particular effects.

ScenarioScenario ImplementazioneImplementation
Usa modalità di riempimento di colonna per la visualizzazione dati in un numero relativamente ridotto di colonne che occupano l'intera larghezza del controllo senza visualizzare la barra di scorrimento orizzontale di dimensioni simili.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. Impostare la proprietà AutoSizeColumnsMode su Fill.Set the AutoSizeColumnsMode property to Fill.
Utilizzare con la modalità riempimento colonna Visualizza valori di dimensioni variabili.Use column fill mode with display values of varying sizes. Impostare la proprietà AutoSizeColumnsMode su Fill.Set the AutoSizeColumnsMode property to Fill. Inizializzare la larghezza delle colonne relativo impostando la colonna FillWeight proprietà o chiamando il controllo AutoResizeColumns metodo dopo aver compilato il controllo con i dati.Initialize relative column widths by setting the column FillWeight properties or by calling the control AutoResizeColumns method after filling the control with data.
Utilizzare la modalità di riempimento colonna con valori di importanza diversa.Use column fill mode with values of varying importance. Impostare la proprietà AutoSizeColumnsMode su Fill.Set the AutoSizeColumnsMode property to Fill. Impostare grande MinimumWidth valori per le colonne che devono sempre visualizzare alcuni dei dati o utilizzare un'opzione di ridimensionamento diversa da riempire modalità per colonne specifiche.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.
Utilizzare la modalità di riempimento colonna per evitare la visualizzazione lo sfondo del controllo.Use column fill mode to avoid displaying the control background. Impostare il AutoSizeMode proprietà della colonna ultimo Fill e utilizzare altre opzioni di ridimensionamento per le altre colonne.Set the AutoSizeMode property of the last column to Fill and use other sizing options for the other columns. Se le altre colonne utilizzano una quantità eccessiva di spazio disponibile, impostare il MinimumWidth proprietà dell'ultima colonna.If the other columns use too much of the available space, set the MinimumWidth property of the last column.
Visualizzare una colonna a larghezza fissa, ad esempio un'icona o una colonna ID.Display a fixed-width column, such as an icon or ID column. Impostare AutoSizeMode a None e Resizable a False per la colonna.Set AutoSizeMode to None and Resizable to False for the column. Inizializzare la larghezza impostando il Width proprietà o chiamando il controllo AutoResizeColumn metodo dopo aver compilato il controllo con i dati.Initialize its width by setting the Width property or by calling the control AutoResizeColumn method after filling the control with data.
Regolare le dimensioni automaticamente ogni volta che il contenuto delle celle modifica per evitare il ritaglio e per ottimizzare l'utilizzo dello spazio.Adjust sizes automatically whenever cell contents change to avoid clipping and to optimize the use of space. Impostare una proprietà di ridimensionamento automatico su un valore che rappresenta una modalità di ridimensionamento basato sul contenuto.Set an automatic sizing property to a value that represents a content-based sizing mode. Per evitare una riduzione delle prestazioni quando si lavora con grandi quantità di dati, utilizzare una modalità di ridimensionamento che calcola solo le righe visualizzate.To avoid a performance penalty when working with large amounts of data, use a sizing mode that calculates displayed rows only.
Adattare le dimensioni i valori nelle righe visualizzate per evitare effetti negativi sulle prestazioni quando si lavora con molte righe.Adjust sizes to fit values in displayed rows to avoid performance penalties when working with many rows. Utilizzare i valori di enumerazione della modalità di ridimensionamento appropriata con il ridimensionamento automatico o a livello di codice.Use the appropriate sizing-mode enumeration values with automatic or programmatic resizing. Per regolare le dimensioni i valori nelle righe appena visualizzate durante lo scorrimento, chiamare un metodo di ridimensionamento in un Scroll gestore dell'evento.To adjust sizes to fit values in newly displayed rows while scrolling, call a resizing method in a Scroll event handler. Fare doppio clic su utente di personalizzare il ridimensionamento in modo che solo i valori nelle righe visualizzate determinano le nuove dimensioni, chiamare un metodo di ridimensionamento in un RowDividerDoubleClick o ColumnDividerDoubleClick gestore dell'evento.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.
Adattare le dimensioni contenuto delle celle solo in orari specifici per evitare effetti negativi sulle prestazioni o per consentire il ridimensionamento dell'utente.Adjust sizes to fit cell contents only at specific times to avoid performance penalties or to enable user resizing. Chiamare un metodo di ridimensionamento basato sul contenuto in un gestore eventi.Call a content-based resizing method in an event handler. Ad esempio, utilizzare il DataBindingComplete eventi per inizializzare le dimensioni dopo l'associazione e gestire il CellValidated o CellValueChanged evento per regolare le dimensioni per compensare le modifiche o modifiche dell'utente in un'origine dati associata.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.
Modificare l'altezza delle righe per il contenuto delle celle su più righe.Adjust row heights for multiline cell contents. Verificare che la larghezza delle colonne siano appropriate per la visualizzazione dei paragrafi di testo e utilizzare ridimensionamento di righe basato sul contenuto automatico o a livello di codice per regolare l'altezza.Ensure that column widths are appropriate for displaying paragraphs of text and use automatic or programmatic content-based row sizing to adjust the heights. Verificare inoltre che le celle con contenuto su più righe vengono visualizzate utilizzando un WrapMode il valore di stile di cella True.Also ensure that cells with multiline content are displayed using a WrapMode cell style value of True.

In genere, si utilizzerà una modalità di ridimensionamento automatico delle colonne per mantenere la larghezza delle colonne o set su una larghezza specifica prima regolata.Typically, you will use an automatic column sizing mode to maintain column widths or set them to specific widths before row heights are adjusted.

Ridimensionamento con il MouseResizing with the Mouse

Per impostazione predefinita, gli utenti possono ridimensionare le righe, colonne e le intestazioni che non utilizzano una modalità di ridimensionamento automatico in base ai valori di cella.By default, users can resize rows, columns, and headers that do not use an automatic sizing mode based on cell values. Per impedire agli utenti di ridimensionamento con altre modalità, ad esempio la modalità di riempimento di colonna, impostare una o più dei seguenti DataGridView proprietà:To prevent users from resizing with other modes, such as column fill mode, set one or more of the following DataGridView properties:

È inoltre possibile impedire agli utenti di ridimensionare le singole righe o colonne impostando i relativi Resizable proprietà.You can also prevent users from resizing individual rows or columns by setting their Resizable properties. Per impostazione predefinita, il Resizable valore della proprietà è basato sul AllowUserToResizeColumns valore della proprietà per le colonne e AllowUserToResizeRows valore della proprietà per le righe.By default, the Resizable property value is based on the AllowUserToResizeColumns property value for columns and the AllowUserToResizeRows property value for rows. Se si imposta in modo esplicito Resizable a True o False, tuttavia, gli override del valore specificato è il valore di controllo per tale riga o colonna.If you explicitly set Resizable to True or False, however, the specified value overrides the control value is for that row or column. Impostare Resizable a NotSet per ripristinare l'ereditarietà.Set Resizable to NotSet to restore the inheritance.

Poiché NotSet Ripristina l'ereditarietà del valore, il Resizable proprietà non restituisce mai un NotSet valore a meno che la riga o colonna non è stato aggiunto a un DataGridView controllo.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. Se è necessario determinare se il Resizable valore della proprietà di una riga o colonna viene ereditato, esaminare il relativo State proprietà.If you need to determine whether the Resizable property value of a row or column is inherited, examine its State property. Se il State valore include il ResizableSet flag, il Resizable valore della proprietà non viene ereditato.If the State value includes the ResizableSet flag, the Resizable property value is not inherited.

Ridimensionamento automaticoAutomatic Sizing

Esistono due tipi di ridimensionamento automatico nel DataGridView controllo: modalità di riempimento di colonna e il ridimensionamento automatico basato sul contenuto.There are two kinds of automatic sizing in the DataGridView control: column fill mode and content-based automatic sizing.

Modalità di riempimento di colonna, le colonne visibili nel controllo per riempire la larghezza dell'area di visualizzazione del controllo.Column fill mode causes the visible columns in the control to fill the width of the control's display area. Per ulteriori informazioni su questa modalità, vedere modalità di riempimento delle colonne nel controllo DataGridView Windows Form.For more information about this mode, see Column Fill Mode in the Windows Forms DataGridView Control.

È anche possibile configurare le righe, colonne e intestazioni di regolare automaticamente le dimensioni per adattarsi al contenuto della cella.You can also configure rows, columns, and headers to automatically adjust their sizes to fit their cell contents. In questo caso, il ridimensionamento viene eseguito ogni volta che cambia il contenuto delle celle.In this case, size adjustment occurs whenever cell contents change.

Nota

Se si gestiscono i valori di cella in una cache di dati personalizzati utilizzando la modalità virtuale, il ridimensionamento automatico si verifica quando l'utente modifica il valore di una cella ma non si verifica quando si modifica un valore memorizzato nella cache di fuori di un CellValuePushed gestore dell'evento.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. In questo caso, chiamare il UpdateCellValue metodo per forzare il controllo per aggiornare la visualizzazione della cella e applicare la modalità di ridimensionamento automatico corrente.In this case, call the UpdateCellValue method to force the control to update the cell display and apply the current automatic sizing modes.

Se il ridimensionamento automatico basato sul contenuto è abilitato per una sola dimensione, che, per righe, ma non colonne o per le colonne ma non le righe, e WrapMode è abilitata, si verifica anche ogni volta che l'altra dimensione.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. Se, ad esempio, righe e colonne non sono configurate per il ridimensionamento automatico e WrapMode è abilitata, gli utenti possono trascinare i separatori di colonna per modificare la larghezza di una colonna e l'altezza delle righe verrà regolato automaticamente in modo che il contenuto delle celle è ancora completamente visualizzato.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.

Se si configura sia righe e colonne per il ridimensionamento automatico basato sul contenuto e WrapMode è abilitato, il DataGridView controllo adatterà le dimensioni, ogni volta che il contenuto delle celle cambia e utilizzerà un rapporto di altezza e la larghezza delle celle ideale nel calcolo delle dimensioni di nuovo.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.

Per configurare la modalità di ridimensionamento per le intestazioni e le righe e per le colonne che non superano il valore del controllo, impostare uno o più dei seguenti DataGridView proprietà: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:

Per eseguire l'override di modalità di ridimensionamento di colonne del controllo per una singola colonna, impostare il relativo AutoSizeMode proprietà su un valore diverso da NotSet.To override the control's column sizing mode for an individual column, set its AutoSizeMode property to a value other than NotSet. La modalità di ridimensionamento per una colonna è determinata dal relativo InheritedAutoSizeMode proprietà.The sizing mode for a column is actually determined by its InheritedAutoSizeMode property. Il valore di questa proprietà è in base alla colonna AutoSizeMode valore della proprietà, a meno che tale valore sia NotSet, nel qual caso il controllo AutoSizeColumnsMode valore ereditato.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.

Utilizzare in base al contenuto il ridimensionamento automatico con cautela quando si lavora con grandi quantità di dati.Use content-based automatic resizing with caution when working with large amounts of data. Per evitare effetti negativi sulle prestazioni, utilizzare la modalità di ridimensionamento automatico che consentono di calcolare le dimensioni basato solo su righe visualizzate anziché un'analisi di ogni riga nel controllo.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. Per ottenere prestazioni ottimali, utilizzare a livello di codice invece il ridimensionamento in modo da poter ridimensionare in momenti specifici, ad esempio immediatamente dopo i nuovi dati verrà caricato.For maximum performance, use programmatic resizing instead so that you can resize at specific times, such as immediately after new data is loaded.

Modalità di ridimensionamento automatico basato sul contenuto non influiscono le righe, colonne o intestazioni nascoste impostando la riga o colonna Visible proprietà o il controllo RowHeadersVisible o ColumnHeadersVisible proprietà false.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. Ad esempio, se una colonna viene nascosto dopo che viene ridimensionata automaticamente per contenere un valore di cella di grandi dimensioni, la colonna nascosta non modificherà la dimensione se viene eliminata la riga contenente il valore della cella di grandi dimensioni.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. Ridimensionamento automatico non si verifica quando cambia la visibilità, pertanto la modifica della colonna Visible proprietà nuovamente a true non forza il ricalcolo delle dimensioni in base al contenuto corrente.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.

Ridimensionamento di basata sul contenuto a livello di codice influisce sulle righe, colonne e intestazioni indipendentemente dalla visibilità.Programmatic content-based resizing affects rows, columns, and headers regardless of their visibility.

Il ridimensionamento a livello di codiceProgrammatic Resizing

Quando il ridimensionamento automatico è disabilitato, è possibile impostare a livello di codice la larghezza esatta o l'altezza delle righe, colonne o intestazioni attraverso le proprietà seguenti:When automatic sizing is disabled, you can programmatically set the exact width or height of rows, columns, or headers through the following properties:

Anche a livello di codice, è possibile ridimensionare righe, colonne e intestazioni in base al contenuto nei modi seguenti:You can also programmatically resize rows, columns, and headers to fit their contents using the following methods:

Questi metodi verranno ridimensionare righe, colonne, o intestazioni una sola volta anziché configurarli per il ridimensionamento continuo.These methods will resize rows, columns, or headers once rather than configuring them for continuous resizing. Le nuove dimensioni vengono calcolate automaticamente per visualizzare tutto il contenuto senza troncamenti.The new sizes are automatically calculated to display all cell contents without clipping. Quando si ridimensionano a livello di programmazione le colonne contenenti InheritedAutoSizeMode i valori della proprietà Fill, tuttavia, la larghezza calcolata in base al contenuto consentono di modificare in modo proporzionale la colonna FillWeight i valori delle proprietà e la colonna effettivamente larghezze sono quindi viene calcolata in base a queste nuove proporzioni affinché tutte le colonne riempire l'area di visualizzazione disponibile del controllo.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.

Il ridimensionamento a livello di codice è utile per evitare effetti negativi sulle prestazioni con il ridimensionamento continuo.Programmatic resizing is useful to avoid performance penalties with continuous resizing. È inoltre utile fornire le dimensioni iniziali per le intestazioni, colonne e righe ridimensionabili dall'utente e per la modalità di riempimento di colonna.It is also useful to provide initial sizes for user-resizable rows, columns, and headers, and for column fill mode.

In genere si chiamerà i metodi di ridimensionamento a livello di codice in momenti specifici.You will typically call the programmatic resizing methods at specific times. Ad esempio, si potrebbero ridimensionare a livello di programmazione tutte le colonne immediatamente dopo il caricamento dei dati oppure si può ridimensionare a livello di codice una riga specifica dopo che è stato modificato un valore di cella determinato.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.

Personalizzazione del comportamento di ridimensionamento in base al contenutoCustomizing Content-based Sizing Behavior

È possibile personalizzare i comportamenti di ridimensionamento quando si lavora con derivata DataGridView tipi di cella, riga e colonna eseguendo l'override di DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeight, o DataGridViewColumn.GetPreferredWidth metodi o chiamando protetto ridimensionamento overload del metodo in una classe DataGridView controllo.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. Gli overload del metodo di ridimensionamento protetti sono progettate per funzionare in coppie per ottenere un rapporto di altezza e la larghezza delle celle ideale, evitando celle eccessivamente larghezza e un'altezza.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. Ad esempio, se si chiama il AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean) overload di AutoResizeRows metodo e passa un valore di false per il Boolean parametro, l'overload calcolerà l'altezza e larghezza ideali per le celle nella riga, ma verrà regolare l'altezza delle righe solo.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. È quindi necessario chiamare il AutoResizeColumns metodo per regolare la larghezza delle colonne al valore calcolato ideale.You must then call the AutoResizeColumns method to adjust the column widths to the calculated ideal.

Opzioni di ridimensionamento basato sul contenutoContent-based Sizing Options

Le enumerazioni utilizzate dai metodi e proprietà di ridimensionamento avere valori simili per il ridimensionamento basato sul contenuto.The enumerations used by sizing properties and methods have similar values for content-based sizing. Con questi valori, è possibile limitare le celle vengono utilizzate per calcolare le dimensioni preferite.With these values, you can limit which cells are used to calculate the preferred sizes. Per tutte le enumerazioni di ridimensionamento, i valori con nomi che fanno riferimento alle celle visualizzate limitano il calcolo alle celle nelle righe visualizzate.For all sizing enumerations, values with names that refer to displayed cells limit their calculations to cells in displayed rows. Esclusione di righe è utile per evitare una riduzione delle prestazioni quando si lavora con grandi quantità di righe.Excluding rows is useful to avoid a performance penalty when you are working with a large quantity of rows. È inoltre possibile limitare i calcoli in valori di cella nelle celle di intestazione o di altro tipo.You can also restrict calculations to cell values in header or nonheader cells.

Vedere ancheSee Also

DataGridView
DataGridView.AllowUserToResizeColumns
DataGridView.AllowUserToResizeRows
DataGridView.ColumnHeadersHeightSizeMode
DataGridView.RowHeadersWidthSizeMode
DataGridViewBand.Resizable
DataGridView.AutoSizeColumnsMode
DataGridView.AutoSizeRowsMode
DataGridViewColumn.AutoSizeMode
DataGridViewColumn.InheritedAutoSizeMode
DataGridView.RowHeadersWidth
DataGridView.ColumnHeadersHeight
DataGridViewRow.Height
DataGridViewColumn.Width
DataGridView.AutoResizeColumn
DataGridView.AutoResizeColumns
DataGridView.AutoResizeColumnHeadersHeight
DataGridView.AutoResizeRow
DataGridView.AutoResizeRows
DataGridView.AutoResizeRowHeadersWidth
DataGridViewAutoSizeRowMode
DataGridViewAutoSizeRowsMode
DataGridViewAutoSizeColumnMode
DataGridViewAutoSizeColumnsMode
DataGridViewColumnHeadersHeightSizeMode
DataGridViewRowHeadersWidthSizeMode
Ridimensionamento di colonne e righe nel controllo DataGridView Windows FormResizing Columns and Rows in the Windows Forms DataGridView Control
Modalità di riempimento di colonna nel controllo DataGridView di Windows FormColumn Fill Mode in the Windows Forms DataGridView Control
Procedura: Impostare le modalità dimensionamento del controllo DataGridView di Windows FormHow to: Set the Sizing Modes of the Windows Forms DataGridView Control