Condividi tramite


Tipi di colonna nel controllo DataGridView di Windows Form

Il controllo DataGridView usa diversi tipi di colonna per visualizzarne le informazioni e consentire agli utenti di modificare o aggiungere informazioni.

Quando si associa un controllo DataGridView e si imposta la proprietà AutoGenerateColumns su true, le colonne vengono generate automaticamente usando i tipi di colonna predefiniti appropriati per i tipi di dati contenuti nell'origine dati associata.

È anche possibile creare istanze di una delle classi di colonna manualmente e aggiungerle alla raccolta restituita dalla proprietà Columns. È possibile creare queste istanze da usare come colonne non associate oppure associarle manualmente. Le colonne associate manualmente sono utili, ad esempio, quando si desidera sostituire una colonna generata automaticamente di un tipo con una colonna di un altro tipo.

Nella tabella seguente vengono descritte le varie classi di colonne disponibili per l'uso nel controllo DataGridView.

Classe Descrizione
DataGridViewTextBoxColumn Usato con valori basati su testo. Generato automaticamente quando si esegue l'associazione a numeri e stringhe.
DataGridViewCheckBoxColumn Usato con valori Boolean e CheckState. Generato automaticamente quando si esegue l'associazione ai valori di questi tipi.
DataGridViewImageColumn Usato per visualizzare le immagini. Generato automaticamente quando si esegue l'associazione a matrici di byte, oggetti Image o oggetti Icon.
DataGridViewButtonColumn Consente di visualizzare i pulsanti nelle celle. Non generato automaticamente durante l'associazione. Tipicamente utilizzato come colonne non associate.
DataGridViewComboBoxColumn Consente di visualizzare elenchi a discesa nelle celle. Non generato automaticamente durante l'associazione. In genere i dati sono associati manualmente.
DataGridViewLinkColumn Consente di visualizzare i collegamenti nelle celle. Non generato automaticamente durante l'associazione. In genere i dati sono associati manualmente.
Tipo di colonna personalizzato È possibile creare una classe di colonna personalizzata ereditando la classe DataGridViewColumn o una delle relative classi derivate per fornire aspetto, comportamento o controlli ospitati personalizzati. Per altre informazioni, vedere Procedura: Personalizzare celle e colonne nel controllo DataGridView di Windows Form estendendone il comportamento e l'aspetto

Questi tipi di colonna sono descritti in modo più dettagliato nelle sezioni seguenti.

DataGridViewTextBoxColumn

Il DataGridViewTextBoxColumn è un tipo di colonna per utilizzo generico da usare con valori basati su testo, ad esempio numeri e stringhe. In modalità di modifica viene visualizzato un controllo TextBox nella cella attiva, consentendo agli utenti di modificare il valore della cella.

I valori delle celle vengono convertiti automaticamente in stringhe per la visualizzazione. I valori immessi o modificati dall'utente vengono analizzati automaticamente per creare un valore di cella del tipo di dati appropriato. È possibile personalizzare queste conversioni gestendo gli eventi CellFormatting e CellParsing del controllo DataGridView.

Il tipo di dati di una colonna, relativo al valore della cella, è specificato nella proprietà ValueType della colonna.

DataGridViewCheckBoxColumn

Il DataGridViewCheckBoxColumn viene usato con i valori Boolean e CheckState. I valori di Boolean vengono visualizzati come caselle di controllo a due stati o a tre stati, a seconda del valore della proprietà ThreeState. Quando la colonna è associata a valori CheckState, il valore della proprietà ThreeState viene true per impostazione predefinita.

In genere, i valori delle celle della casella di controllo sono destinati all'archiviazione, come qualsiasi altro dato, o per l'esecuzione di operazioni di massa. Se si desidera rispondere immediatamente quando gli utenti fa clic su una cella della casella di controllo, è possibile gestire l'evento CellClick, ma questo evento si verifica prima dell'aggiornamento del valore della cella. Se è necessario il nuovo valore al momento del clic, un'opzione consiste nel calcolare il valore previsto in base al valore corrente. Un altro approccio consiste nel eseguire immediatamente il commit della modifica e gestire l'evento CellValueChanged per rispondere. Per eseguire il commit della modifica quando si fa clic sulla cella, è necessario gestire l'evento CurrentCellDirtyStateChanged. Nel gestore, se la cella corrente è una cella della casella di controllo, chiamare il metodo CommitEdit e passare il valore Commit.

DataGridViewImageColumn

Il DataGridViewImageColumn viene usato per visualizzare le immagini. Le colonne immagine possono essere popolate automaticamente da un'origine dati, popolate manualmente per le colonne non associate o popolate dinamicamente tramite un gestore per l'evento CellFormatting.

Il popolamento automatico di una colonna immagine da un'origine dati funziona con matrici di byte in un'ampia gamma di formati di immagine, inclusi tutti i formati supportati dalla classe Image e dal formato OLE Picture usato da Microsoft® Access e dal database di esempio Northwind.

Il popolamento manuale di una colonna immagine è utile quando si vuole offrire le stesse funzionalità di un DataGridViewButtonColumn, ma con un aspetto personalizzato. È possibile gestire l'evento DataGridView.CellClick per rispondere ai clic all'interno di una cella di un'immagine.

Popolare le celle di una colonna immagine in un gestore per l'evento CellFormatting è utile quando si desidera fornire immagini per valori calcolati o valori in formati diversi dalle immagini. Ad esempio, è possibile avere una colonna "Rischio" con valori stringa come "high", "middle"e "low" che si desidera visualizzare come icone. In alternativa, è possibile avere una colonna "Image" che contiene le posizioni delle immagini che devono essere caricate anziché il contenuto binario delle immagini.

DataGridViewButtonColumn

Con il DataGridViewButtonColumnè possibile visualizzare una colonna di celle che contengono pulsanti. Ciò è utile quando si vuole offrire agli utenti un modo semplice per eseguire azioni su record specifici, ad esempio l'inserimento di un ordine o la visualizzazione di record figlio in una finestra separata.

Le colonne dei pulsanti non vengono generate automaticamente quando si effettua il data-binding di un controllo DataGridView. Per usare le colonne di pulsanti, è necessario crearle manualmente e aggiungerle alla raccolta restituita dalla proprietà DataGridView.Columns.

È possibile rispondere ai clic degli utenti nelle celle dei pulsanti gestendo l'evento DataGridView.CellClick.

DataGridViewComboBoxColumn

Con il DataGridViewComboBoxColumnè possibile visualizzare una colonna di celle che contengono menu a tendina. Ciò è utile per l'immissione di dati nei campi che possono contenere solo valori specifici, ad esempio la colonna Category della tabella Products nel database di esempio Northwind.

È possibile popolare l'elenco a discesa usato per tutte le celle allo stesso modo in cui si popola un elenco a discesa ComboBox, manualmente tramite la raccolta restituita dalla proprietà Items oppure associandolo a un'origine dati tramite le proprietà DataSource, DisplayMembere ValueMember. Per ulteriori informazioni, consultare ComboBox Control.

È possibile associare i valori di cella effettivi all'origine dati utilizzata dal controllo DataGridView impostando la proprietà DataPropertyName del System.Windows.Forms.DataGridViewComboBoxColumn.

Le colonne della casella combinata non vengono generate automaticamente quando si collega un controllo DataGridView ai dati. Per usare le colonne della casella combinata, è necessario crearle manualmente e aggiungerle alla raccolta restituita dalla proprietà Columns.

DataGridViewLinkColumn

Con il DataGridViewLinkColumnè possibile visualizzare una colonna di celle che contengono collegamenti ipertestuali. Ciò è utile per i valori URL nell'origine dati o come alternativa alla colonna pulsante per comportamenti speciali, ad esempio l'apertura di una finestra con record figlio.

Le colonne di collegamento non vengono generate automaticamente quando si esegue il data binding di un controllo DataGridView. Per usare le colonne di collegamento, è necessario crearle manualmente e aggiungerle alla raccolta restituita dalla proprietà Columns.

È possibile rispondere ai clic degli utenti sui collegamenti gestendo l'evento CellContentClick. Questo evento è distinto dagli eventi CellClick e CellMouseClick, che si verificano quando un utente fa clic in un punto qualsiasi di una cella.

La classe DataGridViewLinkColumn fornisce diverse proprietà per modificare l'aspetto dei collegamenti prima, durante e dopo aver fatto clic.

Vedere anche