Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Varje cell i kontrollen DataGridView kan ha ett eget format, till exempel textformat, bakgrundsfärg, förgrundsfärg och teckensnitt. Normalt delar dock flera celler specifika stilegenskaper.
Grupper av celler som delar formatmallar kan innehålla alla celler i vissa rader eller kolumner, alla celler som innehåller specifika värden eller alla celler i kontrollen. Eftersom dessa grupper överlappar varandra kan varje cell få sin formateringsinformation från mer än en plats. Du kanske till exempel vill att varje cell i en DataGridView kontroll ska använda samma teckensnitt, men endast celler i valutakolumner ska använda valutaformat och endast valutaceller med negativa tal för att använda en röd förgrundsfärg.
Klassen DataGridViewCellStyle
Klassen DataGridViewCellStyle innehåller följande egenskaper som rör visuellt format:
Den här klassen innehåller också följande egenskaper som rör formatering:
Mer information om dessa egenskaper och andra egenskaper i cellformat finns i referensdokumentationen för DataGridViewCellStyle och de avsnitt som anges i avsnittet Se även nedan.
Använda DataGridViewCellStyle-objekt
Du kan hämta DataGridViewCellStyle objekt från olika egenskaper för DataGridView, DataGridViewColumn, DataGridViewRowoch DataGridViewCell klasser och deras härledda klasser. Om någon av de här egenskaperna inte har angetts än skapas ett nytt DataGridViewCellStyle objekt när värdet hämtas. Du kan också instansiera egna DataGridViewCellStyle objekt och tilldela dem till dessa egenskaper.
Du kan undvika onödig duplicering av formatinformation genom att dela DataGridViewCellStyle objekt mellan flera DataGridView element. Eftersom formaten som anges på kontroll-, kolumn- och radnivåerna filtreras nedåt genom varje nivå till cellnivån kan du också undvika formatduplicering genom att endast ange de formategenskaper på varje nivå som skiljer sig från nivåerna ovan. Detta beskrivs mer detaljerat i avsnittet Formatarv som följer.
I följande tabell visas de primära egenskaper som hämtar eller anger DataGridViewCellStyle objekt.
| Fastighet | Klasserna | Beskrivning | 
|---|---|---|
DefaultCellStyle | 
DataGridView, DataGridViewColumn, DataGridViewRowoch härledda klasser | Hämtar eller anger standardformat som används av alla celler i hela kontrollen (inklusive rubrikceller), i en kolumn eller på en rad. | 
| RowsDefaultCellStyle | DataGridView | Hämtar eller anger standardcellformat som används av alla rader i kontrollen. Detta inkluderar inte rubrikceller. | 
| AlternatingRowsDefaultCellStyle | DataGridView | Hämtar eller anger standardcellformat som används av alternerande rader i kontrollen. Används för att skapa en transaktionsregisterliknande effekt. | 
| RowHeadersDefaultCellStyle | DataGridView | Hämtar eller anger standardcellformat som används av kontrollens radrubriker. Om visuella stilar är aktiverade åsidosätts de av det aktuella temat. | 
| ColumnHeadersDefaultCellStyle | DataGridView | Hämtar eller anger standardcellformat som används av kontrollens kolumnrubriker. Om visuella stilar är aktiverade åsidosätts de av det aktuella temat. | 
| Style | DataGridViewCell och härledda klasser | Hämtar eller anger formatmallar som anges på cellnivå. Dessa stilar åsidosätter de som ärvts från högre nivåer. | 
InheritedStyle | 
DataGridViewCell, DataGridViewRow, DataGridViewColumnoch härledda klasser | Hämtar alla format som för närvarande tillämpas på cellen, raden eller kolumnen, inklusive format som ärvts från högre nivåer. | 
Som nämnts ovan, så instansieras ett nytt DataGridViewCellStyle-objekt automatiskt när värdet för en formategenskap hämtas, om egenskapen inte har angetts tidigare. För att undvika att skapa dessa objekt i onödan har rad- och kolumnklasserna en HasDefaultCellStyle egenskap som du kan kontrollera för att avgöra om egenskapen DefaultCellStyle har angetts. På samma sätt har cellklasserna en HasStyle egenskap som anger om egenskapen Style har angetts.
Var och en av formategenskaperna har en motsvarande PropertyName-Changed händelse i DataGridView-kontrollen. För rad-, kolumn- och cellegenskaper börjar namnet på händelsen med "Row", "Column", eller "Cell" (till exempel RowDefaultCellStyleChanged). Var och en av dessa händelser inträffar när motsvarande formategenskap är inställd på ett annat DataGridViewCellStyle objekt. Dessa händelser inträffar inte när du hämtar ett DataGridViewCellStyle objekt från en formategenskap och ändrar dess egenskapsvärden. Om du vill svara på ändringar i själva cellformatobjekten hanterar du händelsen CellStyleContentChanged.
Arv av formatmall
Varje DataGridViewCell får sitt utseende från sin egenskap InheritedStyle. Det DataGridViewCellStyle objekt som returneras av den här egenskapen ärver dess värden från en hierarki med egenskaper av typen DataGridViewCellStyle. Dessa egenskaper visas nedan i den ordning som InheritedStyle för celler som inte är sidhuvudceller hämtar sina värden.
DataGridView.AlternatingRowsDefaultCellStyle (endast för celler i rader med udda indexnummer)
För rad- och kolumnrubrikceller fylls egenskapen InheritedStyle med värden från följande lista över källegenskaper i den angivna ordningen.
Följande diagram illustrerar den här processen.
              
              
            
Du kan också komma åt formatmallarna som ärvs av specifika rader och kolumner. Kolumnegenskapen InheritedStyle ärver sina värden från följande egenskaper.
Raden InheritedStyle:s egenskap ärver sina värden från följande egenskaper:
DataGridView.AlternatingRowsDefaultCellStyle (endast för celler i rader med udda indexnummer)
För varje egenskap i ett DataGridViewCellStyle objekt som returneras av en InheritedStyle egenskap hämtas egenskapsvärdet från det första cellformatet i lämplig lista som har motsvarande egenskap inställd på ett annat värde än standardvärdena för DataGridViewCellStyle-klassen.
I följande tabell visas hur värdet av egenskapen ForeColor för en exempelcell ärvs från dess innehållande kolumn.
Egenskap av typen DataGridViewCellStyle | 
Exempel ForeColor värde för hämtat objekt | 
|---|---|
| DataGridViewCell.Style | Color.Empty | 
| DataGridViewRow.DefaultCellStyle | Color.Red | 
| DataGridView.AlternatingRowsDefaultCellStyle | Color.Empty | 
| DataGridView.RowsDefaultCellStyle | Color.Empty | 
| DataGridViewColumn.DefaultCellStyle | Color.DarkBlue | 
| DataGridView.DefaultCellStyle | Color.Black | 
I det här fallet är Color.Red-värdet i cellens rad det första verkliga värdet i listan. Detta blir ForeColor egenskapsvärdet för cellens InheritedStyle.
Följande diagram visar hur olika DataGridViewCellStyle egenskaper kan ärva sina värden från olika platser.
              
              
            
Genom att dra nytta av formatarv kan du tillhandahålla lämpliga format för hela kontrollen utan att behöva ange samma information på flera platser.
Även om rubrikceller deltar i formatärv enligt beskrivningen, har objekten som returneras av ColumnHeadersDefaultCellStyle- och RowHeadersDefaultCellStyle-egenskaperna för DataGridView-kontrollen initiala egenskapsvärden som åsidosätter egenskapsvärdena för objektet som returneras av egenskapen DefaultCellStyle. Om du vill att egenskaperna för objektet som returneras av egenskapen DefaultCellStyle ska gälla för rad- och kolumnrubriker måste du ange motsvarande egenskaper för de objekt som returneras av ColumnHeadersDefaultCellStyle och RowHeadersDefaultCellStyle egenskaper till de standardvärden som anges för klassen DataGridViewCellStyle.
Anmärkning
Om visuella formatmallar är aktiverade formateras rad- och kolumnrubrikerna (förutom TopLeftHeaderCell) automatiskt av det aktuella temat, vilket åsidosättar alla format som anges av dessa egenskaper.
Typerna DataGridViewButtonColumn, DataGridViewImageColumnoch DataGridViewCheckBoxColumn initierar också vissa värden för objektet som returneras av egenskapen column DefaultCellStyle. Mer information finns i referensdokumentationen för dessa typer.
Ställa in stilar dynamiskt
Om du vill anpassa cellformat med specifika värden implementerar du en hanterare för händelsen DataGridView.CellFormatting. Hanterare för den här händelsen får ett argument av typen DataGridViewCellFormattingEventArgs. Det här objektet innehåller egenskaper som gör att du kan fastställa värdet för cellen som formateras tillsammans med dess plats i kontrollen DataGridView. Det här objektet innehåller också egenskapen CellStyle som initieras till värdet för egenskapen InheritedStyle för cellen som formateras. Du kan ändra egenskaperna för cellformatet för att ange formatinformation som är lämplig för cellvärdet och platsen.
Anmärkning
Händelserna RowPrePaint och RowPostPaint tar också emot ett DataGridViewCellStyle-objekt i händelsedata, men i deras fall är det en kopia av radens InheritedStyle-egenskap för läs-skyddade ändamål och ändringar i dessa påverkar inte kontrollen.
Du kan också dynamiskt ändra formatmallarna för enskilda celler som svar på händelser som DataGridView.CellMouseEnter och CellMouseLeave händelser. I en hanterare för händelsen CellMouseEnter kan du till exempel lagra det aktuella värdet för cellbakgrundsfärgen (hämtas via cellens Style-egenskap) och sedan ange den till en ny färg som markerar cellen när musen hovrar över den. I en hanterare för händelsen CellMouseLeave kan du återställa bakgrundsfärgen till det ursprungliga värdet.
Anmärkning
Cachelagring av värden som lagras i cellens Style egenskap är viktigt oavsett om ett visst formatvärde har angetts. Om du tillfälligt ersätter en formatinställning säkerställer återställningen till dess ursprungliga tillstånd "inte inställd" att cellen återgår till att ärva formatinställningen från en högre nivå. Om du behöver fastställa det faktiska formatet som gäller för en cell, oavsett om formatet ärvs, använder du cellens InheritedStyle egenskap.
Se även
- 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
 - Grundläggande formatering och styling i Windows Forms DataGridView Control
 - Så här gör du: Ange standardcellformat för Windows Forms DataGridView-kontrollen
 - Dataformatering i Windows Forms DataGridView-kontroll
 
.NET Desktop feedback