Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
DataGridView righe, colonne e intestazioni possono modificare le dimensioni a causa di molteplici eventi diversi. Nella tabella seguente vengono illustrate queste occorrenze.
Evento | Descrizione |
---|---|
Ridimensionamento utente | Gli utenti possono apportare modifiche alle dimensioni trascinando o facendo doppio clic su righe, colonne o divisori di intestazione. |
Ridimensionamento dei controlli | In modalità riempimento colonna, la larghezza delle colonne cambia quando cambia la larghezza del controllo; Ad esempio, quando il controllo viene ancorato al relativo form padre e l'utente ridimensiona il form. |
Modifica del valore della cella | Nelle modalità di ridimensionamento automatico basate sul contenuto le dimensioni cambiano in base ai nuovi valori di visualizzazione. |
Chiamata al metodo | Il ridimensionamento basato sul contenuto a livello di codice consente di apportare modifiche delle dimensioni opportunistiche in base ai valori delle celle al momento della chiamata al metodo. |
Impostazione della proprietà | È anche possibile impostare valori di altezza e larghezza specifici. |
Per impostazione predefinita, il ridimensionamento da parte dell'utente è abilitato, il ridimensionamento automatico è disabilitato e i valori delle celle più larghi rispetto alle colonne vengono ritagliati.
La tabella seguente illustra gli scenari che è possibile usare per modificare il comportamento predefinito o per usare opzioni di ridimensionamento specifiche per ottenere effetti specifici.
Sceneggiatura | Implementazione |
---|---|
Utilizzare la modalità di riempimento delle colonne per visualizzare dati di dimensioni simili in un numero relativamente ridotto di colonne che occupano l'intera larghezza del controllo senza visualizzare la barra di scorrimento orizzontale. | Impostare la proprietà AutoSizeColumnsMode su Fill. |
Usare la modalità di riempimento delle colonne con valori di visualizzazione di dimensioni variabili. | Impostare la proprietà AutoSizeColumnsMode su Fill. Inizializzare le larghezze relative delle colonne impostando le proprietà della colonna FillWeight o chiamando il metodo del controllo AutoResizeColumns dopo aver riempito il controllo con i dati. |
Usare la modalità di riempimento delle colonne con valori con importanza variabile. | Impostare la proprietà AutoSizeColumnsMode su Fill. Impostare valori di MinimumWidth di grandi dimensioni per le colonne che devono sempre visualizzare alcuni dei dati o usare un'opzione di ridimensionamento diversa dalla modalità di riempimento per colonne specifiche. |
Usare la modalità di riempimento della colonna per evitare di visualizzare lo sfondo del controllo. | Impostare la proprietà AutoSizeMode dell'ultima colonna su Fill e utilizzare altre opzioni di ridimensionamento per le altre colonne. Se le altre colonne utilizzano troppo spazio disponibile, impostare la proprietà MinimumWidth dell'ultima colonna. |
Visualizzare una colonna a larghezza fissa, ad esempio un'icona o una colonna ID. | Impostare AutoSizeMode su None e Resizable su False per la colonna. Inizializzare la larghezza impostando la proprietà Width, o chiamando il metodo del controllo AutoResizeColumn dopo aver compilato il controllo con i dati. |
Regolare automaticamente le dimensioni ogni volta che il contenuto delle celle cambia per evitare il ritaglio e ottimizzare l'uso dello spazio. | Impostare una proprietà di ridimensionamento automatico su un valore che rappresenta una modalità di ridimensionamento basata sul contenuto. Per evitare una riduzione delle prestazioni quando si usano grandi quantità di dati, usare una modalità di ridimensionamento che calcola solo le righe visualizzate. |
Adatta le dimensioni per far sì che i valori si inseriscano nelle righe visualizzate, per evitare cali di prestazioni quando si lavora con molte righe. | Usare i valori di enumerazione in modalità di ridimensionamento appropriati con ridimensionamento automatico o programmatico. Per regolare le dimensioni in base ai valori delle righe appena visualizzate durante lo scorrimento, chiamare un metodo di ridimensionamento in un gestore eventi Scroll. Per personalizzare il ridimensionamento con doppio clic dell'utente in modo che solo i valori nelle righe visualizzate determinino le nuove dimensioni, chiamare un metodo di ridimensionamento in un gestore eventi RowDividerDoubleClick o ColumnDividerDoubleClick. |
Regolare le dimensioni per adattare il contenuto delle celle solo in momenti specifici, per evitare penalità sulle prestazioni o consentire il ridimensionamento manuale. | Chiamare un metodo di ridimensionamento basato sul contenuto in un gestore eventi. Ad esempio, utilizzare l'evento DataBindingComplete per inizializzare le misure dopo l'associazione e gestire l'evento CellValidated o CellValueChanged per regolare le misure per compensare le modifiche dell'utente o i cambiamenti in un'origine dati associata. |
Regolare le altezze delle righe per il contenuto delle celle su più linee. | Assicurarsi che le larghezze delle colonne siano appropriate per la visualizzazione di paragrafi di testo e usare il ridimensionamento automatico o programmatico delle righe in base al contenuto per regolare le altezze. Assicurarsi inoltre che le celle con contenuto su più righe vengano visualizzate usando un valore dello stile di cella WrapMode di True. In genere, si userà una modalità di ridimensionamento automatico delle colonne per mantenere le larghezze delle colonne o impostarle su larghezze specifiche prima che le altezze delle righe vengano regolate. |
Ridimensionamento con il mouse
Per impostazione predefinita, gli utenti possono ridimensionare righe, colonne e intestazioni che non usano una modalità di ridimensionamento automatico in base ai valori delle celle. Per impedire agli utenti di ridimensionare con altre modalità, ad esempio la modalità di riempimento delle colonne, impostare una o più delle proprietà DataGridView seguenti:
È anche possibile impedire agli utenti di ridimensionare singole righe o colonne impostando le relative proprietà Resizable. Per impostazione predefinita, il valore della proprietà Resizable si basa sul valore della proprietà AllowUserToResizeColumns per le colonne e sul valore della proprietà AllowUserToResizeRows per le righe. Se si imposta in modo esplicito Resizable su True o False, tuttavia, il valore specificato sostituisce il valore di controllo per quella riga o colonna. Impostare Resizable su NotSet per ripristinare l'ereditarietà.
Poiché NotSet ripristina l'ereditarietà del valore, la proprietà Resizable non restituirà mai un valore NotSet a meno che la riga o la colonna non sia stata aggiunta a un controllo DataGridView. Se hai bisogno di determinare se il valore della proprietà Resizable di una riga o di una colonna è ereditato, esamina la sua proprietà State. Se il valore State include il flag ResizableSet, il valore della proprietà Resizable non viene ereditato.
Ridimensionamento automatico
Esistono due tipi di ridimensionamento automatico nel controllo DataGridView: modalità di riempimento delle colonne e ridimensionamento automatico basato sul contenuto.
La modalità riempimento colonna fa sì che le colonne visibili nel controllo riempiano la larghezza dell'area di visualizzazione del controllo. Per altre informazioni su questa modalità, vedere Modalità riempimento colonna nel controllo DataGridView di Windows Forms.
È anche possibile configurare righe, colonne e intestazioni per regolare automaticamente le dimensioni in base al contenuto della cella. In questo caso, la regolazione delle dimensioni si verifica ogni volta che il contenuto della cella cambia.
Annotazioni
Se si mantengono i valori delle celle in una cache di dati personalizzata usando la modalità virtuale, il ridimensionamento automatico si verifica quando l'utente modifica un valore di cella ma non si verifica quando si modifica un valore memorizzato nella cache all'esterno di un gestore eventi CellValuePushed. In questo caso, chiamare il metodo UpdateCellValue per forzare il controllo ad aggiornare la visualizzazione della cella e applicare le modalità di ridimensionamento automatico correnti.
Se il ridimensionamento automatico basato sul contenuto è abilitato solo per una dimensione, ovvero per le righe ma non per le colonne o per le colonne ma non per le righe, e WrapMode è abilitato anche, la regolazione delle dimensioni si verifica anche ogni volta che cambia l'altra dimensione. Ad esempio, se le righe ma non le colonne sono configurate per il ridimensionamento automatico e WrapMode è abilitato, gli utenti possono trascinare i divisori di colonna per modificare la larghezza di una colonna e le altezze delle righe verranno regolate automaticamente in modo che il contenuto della cella sia ancora completamente visualizzato.
Se si configurano sia righe che colonne per il ridimensionamento automatico basato sul contenuto e WrapMode è abilitato, il controllo DataGridView regola le dimensioni ogni volta che il contenuto della cella è cambiato e userà un rapporto ideale di altezza-larghezza cella durante il calcolo di nuove dimensioni.
Per configurare la modalità di ridimensionamento per intestazioni e righe e per le colonne che non sovrascrivono il valore di controllo, impostare una o più delle seguenti proprietà DataGridView:
Per eseguire l'override della modalità di ridimensionamento della colonna del controllo per una singola colonna, impostarne la proprietà AutoSizeMode su un valore diverso da NotSet. La modalità di ridimensionamento per una colonna è effettivamente determinata dalla relativa proprietà InheritedAutoSizeMode. Il valore di questa proprietà si basa sul valore della proprietà AutoSizeMode della colonna, a meno che tale valore non sia NotSet, nel qual caso il valore AutoSizeColumnsMode del controllo viene ereditato.
Usare il ridimensionamento automatico basato sul contenuto con cautela quando si usano grandi quantità di dati. Per evitare penalità sulle prestazioni, utilizzare le modalità di ridimensionamento automatico che calcolano le dimensioni in base solo alle righe visualizzate anziché analizzare ogni riga nel controllo . Per ottenere prestazioni massime, utilizzare il ridimensionamento programmato così da poter ridimensionare in momenti specifici, ad esempio immediatamente dopo il caricamento dei nuovi dati.
Le modalità di ridimensionamento automatico basate sul contenuto non influiscono su righe, colonne o intestazioni che hai nascosto impostando la proprietà Visible della riga o della colonna o le proprietà di controllo RowHeadersVisible o ColumnHeadersVisible su false
. Ad esempio, se una colonna viene nascosta dopo che viene ridimensionata automaticamente per adattarsi a un valore di cella di grandi dimensioni, la colonna nascosta non modificherà le dimensioni se la riga contenente il valore della cella grande viene eliminata. Il ridimensionamento automatico non si verifica quando viene modificata la visibilità, pertanto la modifica della proprietà colonna Visible in true
non forza il ricalcolo delle sue dimensioni in base al relativo contenuto corrente.
Il ridimensionamento basato sul contenuto programmato influisce su righe, colonne e intestazioni indipendentemente dalla loro visibilità.
Ridimensionamento a livello di codice
Quando il ridimensionamento automatico è disabilitato, è possibile impostare a livello di codice l'esatta larghezza o altezza di righe, colonne o intestazioni tramite le proprietà seguenti:
È anche possibile ridimensionare righe, colonne e intestazioni a livello di codice per adattarne il contenuto usando i metodi seguenti:
Questi metodi ridimensionano righe, colonne o intestazioni una sola volta anziché configurarle per il ridimensionamento continuo. Le nuove dimensioni vengono calcolate automaticamente per visualizzare tutti i contenuti delle celle senza ritagliare. Quando ridimensioni programmaticamente le colonne con valori di proprietà InheritedAutoSizeMode pari a Fill, tuttavia, le larghezze calcolate basate sul contenuto vengono utilizzate per regolare proporzionalmente i valori di proprietà delle colonne FillWeight, e le larghezze effettive delle colonne vengono quindi calcolate secondo queste nuove proporzioni, in modo che tutte le colonne riempiano l'area di visualizzazione disponibile nel controllo.
Il ridimensionamento a livello di codice è utile per evitare penalità sulle prestazioni con ridimensionamento continuo. È utile anche fornire dimensioni iniziali per righe, colonne e intestazioni ridimensionabili dall'utente e per la modalità di riempimento delle colonne.
Di solito si chiamano i metodi di ridimensionamento programmati in momenti specifici. Ad esempio, è possibile ridimensionare a livello di codice tutte le colonne immediatamente dopo il caricamento dei dati oppure ridimensionare a livello di codice una riga specifica dopo la modifica di un determinato valore di cella.
Personalizzazione del comportamento di ridimensionamento basato sul contenuto
È possibile personalizzare i comportamenti di ridimensionamento quando si utilizzano i tipi di cella, riga e colonna derivati DataGridView eseguendo l'override dei metodi DataGridViewCell.GetPreferredSize, DataGridViewRow.GetPreferredHeighto DataGridViewColumn.GetPreferredWidth o chiamando overload protetti del metodo di ridimensionamento in un controllo derivato DataGridView. I sovraccarichi del metodo di ridimensionamento protetto sono progettati per lavorare in coppie per ottenere un rapporto ideale tra altezza e larghezza delle celle, evitando celle troppo ampie o alte. Ad esempio, se si chiama l'overload AutoResizeRows(DataGridViewAutoSizeRowsMode,Boolean)
del metodo AutoResizeRows e si passa un valore di false
per il parametro Boolean, l'overload calcolerà le altezze e le larghezze ideali per le celle della riga, ma regola solo le altezze delle righe. È quindi necessario chiamare il metodo AutoResizeColumns per regolare le larghezze delle colonne in base all'ideale calcolato.
Opzioni di ridimensionamento basate sul contenuto
Le enumerazioni utilizzate dalle proprietà e dai metodi di ridimensionamento hanno valori simili per il ridimensionamento basato sul contenuto. Con questi valori, è possibile limitare le celle usate per calcolare le dimensioni preferite. Per tutte le enumerazioni di ridimensionamento, i valori con nomi che fanno riferimento alle celle visualizzate limitano i calcoli alle celle nelle righe visualizzate. L'esclusione di righe è utile per evitare una penalizzazione delle prestazioni quando si lavora con un grande numero di righe. È anche possibile limitare i calcoli ai valori delle celle nell'intestazione o nelle celle nonheader.
Vedere anche
- 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 di Windows Forms
- Modalità di riempimento delle colonne nel controllo DataGridView di Windows Forms
- Procedura: Impostare le modalità di ridimensionamento del controllo DataGridView di Windows Form
.NET Desktop feedback