2012-02-14 18 views
7

Mam DataGridView w mojej aplikacji C#. Korzystając z projektanta ustawiłem właściwości AlternatingRowsDefaultCellStyle, a także właściwości DefaultCellStyle w samym DGV. Oba te style mają wartość dopełnienia 0, 0, 5, 0. Nie ustawiłem żadnych niestandardowych stylów dla żadnej z kolumn DGV z ​​menu Edit Columns w dodatku DataGridView Tasks.Zmiana dopełnienia dla wszystkich komórek w pojedynczej kolumnie DataGridView

W kolumnie DGV jest jedna kolumna, w której rysuję niewielki wykres dla każdego wiersza. Chciałbym usunąć wypełnienie ze wszystkich komórek w tej kolumnie, więc nie ma dopełnienia zastosowanego w komórce, która pozostawia pewną białą przestrzeń na końcu wykresu.

Każda z poniższych czynności, które próbowałem, nie usuwa wyściółki z komórek w kolumnie, ale także nie wyrzucaj żadnych wyjątków.

// first attempt 
// taken from http://social.msdn.microsoft.com/Forums/eu/winforms/thread/a9227253-8bb4-429a-a700-8a3a255afe4d 
deviceGrid.Columns["GProduction"].DefaultCellStyle.Padding = new Padding(0); 

// second attempt 
DataGridViewCellStyle style = deviceGrid.Columns["Graph"].DefaultCellStyle; // also tried Clone() 
style.Padding = new Padding(0); 
deviceGrid.Columns["GProduction"].DefaultCellStyle = style; 

// third attempt 
DataGridViewColumn col = deviceGrid.Columns["Graph"]; 
DataGridViewImageCell icell = new DataGridViewImageCell(); 
icell.Style.Padding = new Padding(0); 
col.CellTemplate = icell; 

Podejrzewam, że może DefaultCellStyle wyściółka z DataGridView sama jest przesłanianie domyślny styl komórki próbuję ustawić dla kolumny, ale jeśli tak jest, co muszę zrobić, aby temu zapobiec?

ROZWIĄZANIE:
po wykonaniu dostarczone przez jmh_gr znalazłem problemem było to, że DefaultCellStyle dla samego DataGridView jest dziedziczona ostatni na komórce, więc musiałem wyjąć wyściółkę z właściwości DGV, i stosować go do wszystkich kolumn oprócz tej, której nie chciałem wypełniać.

+1

spędzić trochę czasu z [Style komórki w Windows Forms DataGridView] (http://msdn.microsoft.com/en-us/library/1yef90x0.aspx), który szczegółowo opisuje dziedziczenie stylu. Trudno dokładnie określić, jaki jest stos stylów, nie widząc wszystkich stylów kodu i GUI. –

+0

@jmh_gr Dzięki za wskazanie, widzę teraz, że dziedziczy on styl z DGV DefaultCellStyle LAST, ponieważ tam właśnie ustawiam dopełnienie, to przesłonię wartość 0 ustawioną na kolumnie lub samej komórce. Uważam, że rozwiązaniem jest zastosowanie dopełnienia 5px w komórkach wymagających wypełnienia i pozostawienie 0 wypełnienia w domyślnych stylach. – drew010

+0

Zamiast umieszczać [rozwiązane] w tytule i edytować pytanie, umieść swoje rozwiązanie jako odpowiedź. Za kilka dni możesz wrócić i oznaczyć go jako zaakceptowany. –

Odpowiedz

2

Po wykonaniu link dostarczonej przez jmh_gr znalazłem problem polegający na tym, że DefaultCellStyle dla samego DataGridView jest dziedziczone OSTATNIEGO w komórce.

Rozwiązaniem było usunięcie wypełnienia z właściwości DGV i zastosowanie go do wszystkich kolumn z wyjątkiem tego, którego nie chciałem wypełniać.

0

Oto jak możemy dodać dopełnienie do komórki DataGridView Header

 dgv.Columns("col1").HeaderCell.Style.Padding = New Padding(0, 5, 0, 0) 
     dgv.Columns("col2").HeaderCell.Style.Padding = New Padding(0, 5, 0, 0) 

ten kod musi zostać dodany w konstruktorze lub OnLoad(...)

Powiązane problemy