Stili della cella nel controllo DataGridView Windows FormCell Styles in the Windows Forms DataGridView Control

Ogni cella all'interno di DataGridView controllo può disporre di uno stile specifico, ad esempio il formato di testo, colore di sfondo, colore di primo piano e tipo di carattere.Each cell within the DataGridView control can have its own style, such as text format, background color, foreground color, and font. In genere, tuttavia, più celle condividono le caratteristiche di stile particolare.Typically, however, multiple cells will share particular style characteristics.

Gruppi di celle che condividono gli stili possono includere tutte le celle all'interno di righe specifiche o colonne, tutte le celle che contengono determinati valori o tutte le celle nel controllo.Groups of cells that share styles may include all cells within particular rows or columns, all cells that contain particular values, or all cells in the control. Poiché questi gruppi si sovrappongono, ogni cella può ottenere le informazioni di stile da più di un'unica posizione.Because these groups overlap, each cell may get its styling information from more than one place. Ad esempio, è consigliabile ogni cella un DataGridView controllo da utilizzare stesso carattere, ma solo le celle delle colonne di valuta da utilizzare il formato di valuta e solo le celle di valuta con numeri negativi per utilizzare un colore di primo piano rosso.For example, you may want every cell in a DataGridView control to use the same font, but only cells in currency columns to use currency format, and only currency cells with negative numbers to use a red foreground color.

La classe DataGridViewCellStyleThe DataGridViewCellStyle Class

La DataGridViewCellStyle classe contiene le seguenti proprietà correlate allo stile di visualizzazione:The DataGridViewCellStyle class contains the following properties related to visual style:

Questa classe contiene inoltre le proprietà seguenti relative alla formattazione:This class also contains the following properties related to formatting:

Per ulteriori informazioni su queste proprietà e altre proprietà di stile di cella, vedere il DataGridViewCellStyle documentazione di riferimento e gli argomenti elencati nella sezione Vedere anche.For more information on these properties and other cell-style properties, see the DataGridViewCellStyle reference documentation and the topics listed in the See Also section below.

Utilizzo di oggetti DataGridViewCellStyleUsing DataGridViewCellStyle Objects

È possibile recuperare DataGridViewCellStyle oggetti da varie proprietà del DataGridView, DataGridViewColumn, DataGridViewRow, e DataGridViewCell classi e le relative classi derivate.You can retrieve DataGridViewCellStyle objects from various properties of the DataGridView, DataGridViewColumn, DataGridViewRow, and DataGridViewCell classes and their derived classes. Se una di queste proprietà non è ancora stata impostata, recuperarne il valore verrà creato un nuovo DataGridViewCellStyle oggetto.If one of these properties has not yet been set, retrieving its value will create a new DataGridViewCellStyle object. È inoltre possibile creare istanze proprie DataGridViewCellStyle oggetti e assegnarli a queste proprietà.You can also instantiate your own DataGridViewCellStyle objects and assign them to these properties.

È possibile evitare un'inutile duplicazione delle informazioni di stile tramite la condivisione DataGridViewCellStyle oggetti tra più DataGridView elementi.You can avoid unnecessary duplication of style information by sharing DataGridViewCellStyle objects among multiple DataGridView elements. Poiché gli stili impostati al controllo, una colonna e un filtro per i livelli di riga verso il basso attraverso ogni livello a livello di cella, è anche possibile evitare la duplicazione di stile impostando solo le proprietà di stile a ogni livello che sono diversi rispetto ai livelli superiori.Because the styles set at the control, column, and row levels filter down through each level to the cell level, you can also avoid style duplication by setting only those style properties at each level that differ from the levels above. Come descritto più dettagliatamente nella sezione sull'ereditarietà degli stili di seguito.This is described in more detail in the Style Inheritance section that follows.

Nella tabella seguente sono elencate le proprietà principali che ottiene o imposta un DataGridViewCellStyle oggetti.The following table lists the primary properties that get or set DataGridViewCellStyle objects.

ProprietàProperty ClassiClasses DescrizioneDescription
DefaultCellStyle DataGridView, DataGridViewColumn, DataGridViewRowe le classi derivateDataGridView, DataGridViewColumn, DataGridViewRow, and derived classes Ottiene o imposta gli stili predefiniti utilizzati da tutte le celle nell'intero controllo (incluse le celle di intestazione), in una colonna o in una riga.Gets or sets default styles used by all cells in the entire control (including header cells), in a column, or in a row.
RowsDefaultCellStyle DataGridView Ottiene o imposta gli stili di cella predefiniti per tutte le righe nel controllo.Gets or sets default cell styles used by all rows in the control. Non include le celle di intestazione.This does not include header cells.
AlternatingRowsDefaultCellStyle DataGridView Ottiene o imposta gli stili di cella predefinito utilizzati da righe alternate nel controllo.Gets or sets default cell styles used by alternating rows in the control. Consente di creare un effetto registro.Used to create a ledger-like effect.
RowHeadersDefaultCellStyle DataGridView Ottiene o imposta gli stili predefiniti utilizzati dalle intestazioni di riga del controllo.Gets or sets default cell styles used by the control's row headers. Se sono abilitati, sottoposto a override dal tema corrente.Overridden by the current theme if visual styles are enabled.
ColumnHeadersDefaultCellStyle DataGridView Ottiene o imposta gli stili predefiniti utilizzati dalle intestazioni di colonna del controllo.Gets or sets default cell styles used by the control's column headers. Se sono abilitati, sottoposto a override dal tema corrente.Overridden by the current theme if visual styles are enabled.
Style DataGridViewCell e le classi derivateDataGridViewCell and derived classes Ottiene o imposta gli stili specificati a livello di cella.Gets or sets styles specified at the cell level. Questi stili sostituiscono quelli ereditati dai livelli superiori.These styles override those inherited from higher levels.
InheritedStyle DataGridViewCell, DataGridViewRow, DataGridViewColumne le classi derivateDataGridViewCell, DataGridViewRow, DataGridViewColumn, and derived classes Ottiene tutti gli stili attualmente applicati alla cella, riga o colonna, inclusi gli stili ereditati dai livelli superiori.Gets all the styles currently applied to the cell, row, or column, including styles inherited from higher levels.

Come indicato in precedenza, ottenere il valore di una proprietà di stile automaticamente creata un'istanza di un nuovo DataGridViewCellStyle oggetto se la proprietà non è stata precedentemente impostata.As mentioned above, getting the value of a style property automatically instantiates a new DataGridViewCellStyle object if the property has not been previously set. Per evitare la creazione di questi oggetti inutilmente, le classi di riga e colonna hanno un HasDefaultCellStyle proprietà che è possibile verificare per determinare se il DefaultCellStyle proprietà è stata impostata.To avoid creating these objects unnecessarily, the row and column classes have a HasDefaultCellStyle property that you can check to determine whether the DefaultCellStyle property has been set. Analogamente, le classi di cella hanno un HasStyle proprietà che indica se il Style proprietà è stata impostata.Similarly, the cell classes have a HasStyle property that indicates whether the Style property has been set.

Ogni proprietà di stile ha un corrispondente PropertyName Changed evento il DataGridView controllo.Each of the style properties has a corresponding PropertyNameChanged event on the DataGridView control. Per riga, colonna e le proprietà di cella, il nome dell'evento inizia con "Row","Column", o "Cell" (ad esempio, RowDefaultCellStyleChanged).For row, column, and cell properties, the name of the event begins with "Row", "Column", or "Cell" (for example, RowDefaultCellStyleChanged). Ciascuno di questi eventi si verifica quando la proprietà di stile corrispondente è impostata su un altro DataGridViewCellStyle oggetto.Each of these events occurs when the corresponding style property is set to a different DataGridViewCellStyle object. Questi eventi non si verificano quando si recupera un DataGridViewCellStyle da una proprietà di stile dell'oggetto e modificare i valori delle proprietà.These events do not occur when you retrieve a DataGridViewCellStyle object from a style property and modify its property values. Per rispondere alle modifiche apportate agli oggetti di stile di cella stessi, gestire il CellStyleContentChanged evento.To respond to changes to the cell style objects themselves, handle the CellStyleContentChanged event.

Ereditarietà degli stiliStyle Inheritance

Ogni DataGridViewCell Ottiene il relativo aspetto dalla relativa InheritedStyle proprietà.Each DataGridViewCell gets its appearance from its InheritedStyle property. Il DataGridViewCellStyle oggetto restituito da questa proprietà eredita i valori da una gerarchia di proprietà del tipo DataGridViewCellStyle.The DataGridViewCellStyle object returned by this property inherits its values from a hierarchy of properties of type DataGridViewCellStyle. Queste proprietà sono elencate di seguito nell'ordine in cui il InheritedStyle per le celle di intestazione non ottiene i valori.These properties are listed below in the order in which the InheritedStyle for non-header cells obtains its values.

  1. DataGridViewCell.Style

  2. DataGridViewRow.DefaultCellStyle

  3. DataGridView.AlternatingRowsDefaultCellStyle (solo per le celle delle righe con numeri di indice dispari)DataGridView.AlternatingRowsDefaultCellStyle (only for cells in rows with odd index numbers)

  4. DataGridView.RowsDefaultCellStyle

  5. DataGridViewColumn.DefaultCellStyle

  6. DataGridView.DefaultCellStyle

Per le celle dell'intestazione di riga e colonna, il InheritedStyle proprietà viene popolata dai valori nell'elenco seguente delle proprietà di origine nell'ordine indicato.For row and column header cells, the InheritedStyle property is populated by values from the following list of source properties in the given order.

  1. DataGridViewCell.Style

  2. DataGridView.ColumnHeadersDefaultCellStyle o DataGridView.RowHeadersDefaultCellStyleDataGridView.ColumnHeadersDefaultCellStyle or DataGridView.RowHeadersDefaultCellStyle

  3. DataGridView.DefaultCellStyle

Nel diagramma seguente viene illustrato questo processo.The following diagram illustrates this process.

Le proprietà di tipo DataGridViewCellStyleProperties of type DataGridViewCellStyle

È inoltre possibile accedere agli stili ereditati da colonne e righe specifiche.You can also access the styles inherited by specific rows and columns. La colonna InheritedStyle proprietà eredita i valori dalle proprietà seguenti.The column InheritedStyle property inherits its values from the following properties.

  1. DataGridViewColumn.DefaultCellStyle

  2. DataGridView.DefaultCellStyle

La riga InheritedStyle proprietà eredita i valori dalle proprietà seguenti.The row InheritedStyle property inherits its values from the following properties.

  1. DataGridViewRow.DefaultCellStyle

  2. DataGridView.AlternatingRowsDefaultCellStyle (solo per le celle delle righe con numeri di indice dispari)DataGridView.AlternatingRowsDefaultCellStyle (only for cells in rows with odd index numbers)

  3. DataGridView.RowsDefaultCellStyle

  4. DataGridView.DefaultCellStyle

Per ogni proprietà in un DataGridViewCellStyle oggetto restituito da un InheritedStyle proprietà, il valore della proprietà viene ottenuto dal primo stile di cella nell'elenco appropriato che dispone della corrispondente proprietà impostata su un valore diverso dal DataGridViewCellStyle classe delle impostazioni predefinite.For each property in a DataGridViewCellStyle object returned by an InheritedStyle property, the property value is obtained from the first cell style in the appropriate list that has the corresponding property set to a value other than the DataGridViewCellStyle class defaults.

Nella tabella seguente viene illustrato come la ForeColor ereditato la colonna contenente il valore della proprietà per una cella di esempio.The following table illustrates how the ForeColor property value for an example cell is inherited from its containing column.

proprietà di tipo DataGridViewCellStyleProperty of type DataGridViewCellStyle Esempio ForeColor valore per l'oggetto recuperatoExample ForeColor value for retrieved object
DataGridViewCell.Style Color.Empty
DataGridViewRow.DefaultCellStyle Color.Red
DataGridView.AlternatingRowsDefaultCellStyle Color.Empty
DataGridView.RowsDefaultCellStyle Color.Empty
DataGridViewColumn.DefaultCellStyle Color.DarkBlue
DataGridView.DefaultCellStyle Color.Black

In questo caso, il Color.Red valore dalla riga della cella è il primo valore effettivo nell'elenco.In this case, the Color.Red value from the cell's row is the first real value on the list. Questo valore diventa il ForeColor valore della proprietà della cella InheritedStyle.This becomes the ForeColor property value of the cell's InheritedStyle.

Il diagramma seguente illustra come i diversi DataGridViewCellStyle proprietà possono ereditare i relativi valori da posizioni diverse.The following diagram illustrates how different DataGridViewCellStyle properties can inherit their values from different places.

Proprietà DataGridView-valore ereditarietàDataGridView property-value inheritance

Sfruttando di ereditarietà, è possibile fornire stili appropriati per l'intero controllo senza dover specificare le stesse informazioni in più posizioni.By taking advantage of style inheritance, you can provide appropriate styles for the entire control without having to specify the same information in multiple places.

Anche se le celle di intestazione partecipano all'ereditarietà stile come descritto, gli oggetti restituiti dal ColumnHeadersDefaultCellStyle e RowHeadersDefaultCellStyle le proprietà del DataGridView controllo dispone di valori iniziali delle proprietà che sostituiscono i valori delle proprietà dell'oggetto restituito da il DefaultCellStyle proprietà.Although header cells participate in style inheritance as described, the objects returned by the ColumnHeadersDefaultCellStyle and RowHeadersDefaultCellStyle properties of the DataGridView control have initial property values that override the property values of the object returned by the DefaultCellStyle property. Se si desidera che le proprietà impostate per l'oggetto restituito dal DefaultCellStyle proprietà da applicare alle intestazioni di riga e colonna, è necessario impostare le proprietà corrispondenti di oggetti restituiti dal ColumnHeadersDefaultCellStyle e RowHeadersDefaultCellStyle indicato sui valori predefiniti per la DataGridViewCellStyle classe.If you want the properties set for the object returned by the DefaultCellStyle property to apply to row and column headers, you must set the corresponding properties of the objects returned by the ColumnHeadersDefaultCellStyle and RowHeadersDefaultCellStyle properties to the defaults indicated for the DataGridViewCellStyle class.

Nota

Se sono abilitati gli stili di visualizzazione, le intestazioni di riga e colonna (tranne che per il TopLeftHeaderCell) viene automaticamente applicato uno stile dal tema corrente, si esegue l'override di tutti gli stili specificati mediante queste proprietà.If visual styles are enabled, the row and column headers (except for the TopLeftHeaderCell) are automatically styled by the current theme, overriding any styles specified by these properties.

Il DataGridViewButtonColumn, DataGridViewImageColumn, e DataGridViewCheckBoxColumn inizializzano inoltre alcuni valori dell'oggetto restituito dalla colonna DefaultCellStyle proprietà.The DataGridViewButtonColumn, DataGridViewImageColumn, and DataGridViewCheckBoxColumn types also initialize some values of the object returned by the column DefaultCellStyle property. Per ulteriori informazioni, vedere la documentazione di riferimento per questi tipi.For more information, see the reference documentation for these types.

L'impostazione degli stili in modo dinamicoSetting Styles Dynamically

Per personalizzare gli stili di celle con valori particolari, implementare un gestore per il DataGridView.CellFormatting evento.To customize the styles of cells with particular values, implement a handler for the DataGridView.CellFormatting event. Gestori per questo evento ricevono un argomento del DataGridViewCellFormattingEventArgs tipo.Handlers for this event receive an argument of the DataGridViewCellFormattingEventArgs type. Questo oggetto contiene proprietà che consentono di determinare il valore della cella formattato con la posizione nel DataGridView controllo.This object contains properties that let you determine the value of the cell being formatted along with its location in the DataGridView control. Questo oggetto contiene inoltre un CellStyle proprietà che viene inizializzato il valore di InheritedStyle proprietà della cella formattata.This object also contains a CellStyle property that is initialized to the value of the InheritedStyle property of the cell being formatted. È possibile modificare le proprietà di stile di cella per specificare le informazioni di stile appropriate per il valore di cella e il percorso.You can modify the cell style properties to specify style information appropriate to the cell value and location.

Nota

Il RowPrePaint e RowPostPaint eventi ricevono inoltre un DataGridViewCellStyle dati dell'evento dell'oggetto, ma in maiuscole, è una copia della riga InheritedStyle proprietà ai fini di sola lettura e modifiche non influiscono sul controllo.The RowPrePaint and RowPostPaint events also receive a DataGridViewCellStyle object in the event data, but in their case, it is a copy of the row InheritedStyle property for read-only purposes, and changes to it do not affect the control.

È inoltre possibile modificare dinamicamente gli stili delle singole celle in risposta a eventi, ad esempio il DataGridView.CellMouseEnter e CellMouseLeave eventi.You can also dynamically modify the styles of individual cells in response to events such as the DataGridView.CellMouseEnter and CellMouseLeave events. Ad esempio, in un gestore per il CellMouseEnter evento, è possibile archiviare il valore del colore di sfondo della cella corrente (recuperati tramite la cella Style proprietà), quindi viene impostato un nuovo colore che la cella viene evidenziata quando il mouse viene spostato su di esso.For example, in a handler for the CellMouseEnter event, you could store the current value of the cell background color (retrieved through the cell's Style property), then set it to a new color that will highlight the cell when the mouse hovers over it. In un gestore per il CellMouseLeave evento, è quindi possibile ripristinare il colore di sfondo per il valore originale.In a handler for the CellMouseLeave event, you can then restore the background color to the original value.

Nota

La memorizzazione nella cache i valori archiviati nella cella Style proprietà è importante indipendentemente dall'impostazione di un valore di stile particolare.Caching the values stored in the cell's Style property is important regardless of whether a particular style value is set. Se si sostituisce temporaneamente un'impostazione di stile, eseguire il ripristino allo stato "non impostata" originale garantisce che la cella tornerà a ereditare l'impostazione di stile da un livello superiore.If you temporarily replace a style setting, restoring it to its original "not set" state ensures that the cell will go back to inheriting the style setting from a higher level. Se è necessario determinare lo stile effettivo per una cella, indipendentemente dal fatto se lo stile è ereditato, utilizzare la cella InheritedStyle proprietà.If you need to determine the actual style in effect for a cell regardless of whether the style is inherited, use the cell's InheritedStyle property.

Vedere ancheSee Also

DataGridView
DataGridViewCellStyle
DataGridView.AlternatingRowsDefaultCellStyle
DataGridView.ColumnHeadersDefaultCellStyle
DataGridView.DefaultCellStyle
DataGridView.RowHeadersDefaultCellStyle
DataGridView.RowsDefaultCellStyle
DataGridViewBand.InheritedStyle
DataGridViewRow.InheritedStyle
DataGridViewColumn.InheritedStyle
DataGridViewBand.DefaultCellStyle
DataGridViewCell.InheritedStyle
DataGridViewCell.Style
DataGridView.CellFormatting
DataGridView.CellStyleContentChanged
DataGridView.RowPrePaint
DataGridView.RowPostPaint
Formattazione e stile di base nel controllo DataGridView di Windows FormBasic Formatting and Styling in the Windows Forms DataGridView Control
Procedura: Impostare stili di cella predefiniti per il controllo DataGridView di Windows FormHow to: Set Default Cell Styles for the Windows Forms DataGridView Control
Formattazione di dati nel controllo DataGridView di Windows FormData Formatting in the Windows Forms DataGridView Control