2010-01-29 17 views
9

Mi chiedevo se sia possibile rimuovere lo spazio inutilizzato (lo spazio grigio) del controllo DataGridView in C#. Devo fare in modo che DataGridView mostri solo la tabella bianca.DatagridView: rimuove lo spazio inutilizzato?

alt text http://www.timvw.be/wp-content/images/datagridview-to-excel-1.gif

Qualche suggerimento?

+0

Buona domanda ... ma nessuna risposta soddisfacente !!!! :( –

+0

Dai un'occhiata alla mia risposta qui – Tina

+0

Il collegamento dell'immagine è rotto –

risposta

2

credo che si desidera:

myDataGrid.AutoSizeColumnsMode = Fill 

EDIT: Questo ridimensiona solo le colonne. Non sono sicuro del modo in cui ti libererai dello spazio grigio di riga se non ridimensionando l'altezza della griglia.

+0

Questo non eliminerà tutto lo spazio grigio, solo lo spazio a destra delle colonne.Dovrai scrivere un gestore per l'evento di ridimensionamento per ridimensionare le righe visibili per riempire la griglia se desideri tale comportamento. –

+0

Con la tua modifica non sei corretto nell'ipotesi che esista un valore di riempimento per AutoSizeRowsMode. –

+0

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewautosizerowsmode.aspx –

5

Impostare la RowsHeaderVisible proprietà su false, è possibile farlo dal progettista, nella categoria Appearence, o dal codice:

dataGridView1.RowsHeaderVisible = false; 

Al fine di rimuovere la riga indicatore sul lato sinistro, come per il resto dello spazio grigio, è possibile provare a impostare il già citato AutoSizeColumnsMode in Riempimento, ma la parte inferiore resterà in grigio per mancanza di righe.

Invece di dimensionare le celle per riempire la griglia, è possibile ridimensionare la griglia per adattarla alle celle. Indipendentemente dal fatto che questo sia un approccio accettabile dipenderà dal tuo intento.

Voglio dire, è possibile che se proprio il colore che ti dà fastidio, l'impostazione del colore di sfondo su bianco farebbe il trucco.

+1

Quindi ... non esiste una soluzione perfetta ?? –

+0

Grazie, hai salvato la mia giornata .. !! – User5590

1
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; 
+0

Errore: impossibile convertire in modo implicito il tipo 'System.Windows.Forms.DataGridViewAutoSizeColumnMode' in 'System.Windows.Forms.DataGridViewAutoSizeColumnsMode'. Esiste una conversione esplicita (ti manca un cast?) –

+0

Puoi aggiungere una "s" dopo la colonna nel tuo System.Windows.Forms.DataGridViewAutoSizeColumnMode e il problema sarà risolto :) – Tina

4

Non ho trovato un modo semplice per rimuovere lo spazio "inutilizzato" o grigio (SfondoColore). Tuttavia, una soluzione efficace per me era nascondere i bordi di DataGridView e cambiare il suo colore di sfondo sullo sfondo del controllo circostante. In sostanza, la percezione è che non ci sia più spazio inutilizzato.

Ecco un frammento in pseudocodice:

TableGridView = DataGridView() 
TableGridView.Width = 0 
TableGridView.Height = 0 
TableGridView.AutoSize = true 
TableGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells 
TableGridView.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells 
TableGridView.BackgroundColor = SystemColors.ControlLightLight 
TableGridView.BorderStyle = BorderStyle.None 

ho letto da qualche parte che l'impostazione AutoSize non si applica, tuttavia, ha fatto cambiare le cose per me. Questo esempio suggerisce che il controllo circostante ha un colore di sfondo di SystemColors.ControlLightLight, ma può essere modificato secondo necessità.

Si prega di votare questo se ti ha aiutato.

+0

Upvoted, ha aiutato ... questo era il il più vicino possibile fino ad ora – Jack

5

A volte (soprattutto con WinForms) il modo migliore è quello di incidere:

dataGridView1.BackgroundColor = System.Drawing.SystemColors.Control; 

ho rubato da questo post: removing the empty gray space in datagrid in c#

+0

Questo funziona, ma poi hai ancora il confine. Qualche idea su come rimuoverlo? –

0

Beh, ho faticato a trovare una risposta per questa prima, ma in Alla fine, se si vuole imitare un DataGridView vuoto, la risposta lunga è di creare "White" Oggetti rettangolo e utilizzare Grafica per riempire l'intera griglia su un metodo OnPaint sovrascritto.

Problemi correlati