Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A DataGridView vezérlőelem minden cellának saját stílusa lehet, például szövegformátum, háttérszín, előtérszín és betűtípus. Általában azonban több cella is rendelkezik bizonyos stílusjellemzőkkel.
A stílusokat megosztó cellacsoportok tartalmazhatják az adott sorokban vagy oszlopokban lévő összes cellát, az adott értékeket tartalmazó összes cellát vagy a vezérlőelem összes celláját. Mivel ezek a csoportok átfedésben vannak, az egyes cellák több helyről is megkaphatják a stílusinformációkat. Előfordulhat például, hogy egy DataGridView vezérlőelem minden cellájának ugyanazt a betűtípust kell használnia, de csak a pénznemoszlopokban lévő cellák használják a pénznemformátumot, és csak a negatív számokat tartalmazó pénznemcellák piros előtérszínt használnak.
A DataGridViewCellStyle osztály
A DataGridViewCellStyle osztály a vizualizáció stílusához kapcsolódó alábbi tulajdonságokat tartalmazza:
Ez az osztály a formázáshoz kapcsolódó alábbi tulajdonságokat is tartalmazza:
Ezekről a tulajdonságokról és más cellastílusú tulajdonságokról további információt a DataGridViewCellStyle referenciadokumentációjában és az alábbi Lásd még szakaszban felsorolt témakörökben talál.
DataGridViewCellStyle-objektumok használata
A DataGridViewCellStyle, DataGridView, DataGridViewColumnés DataGridViewRow osztályok, valamint az ezekből származtatott osztályok különböző tulajdonságaiból lekérheti a DataGridViewCell objektumokat. Ha az egyik tulajdonság még nincs beállítva, az értékének beolvasása új DataGridViewCellStyle objektumot hoz létre. Saját DataGridViewCellStyle objektumokat is létrehozhat, és hozzárendelheti őket ezekhez a tulajdonságokhoz.
Elkerülheti a stílusinformációk szükségtelen duplikálását, ha DataGridViewCellStyle objektumokat oszt meg több DataGridView elem között. Mivel a vezérlőelemek, oszlop- és sorszintek stílusai az egyes szinteken a cellaszintig szűrnek, a stílusok duplikálását úgy is elkerülheti, hogy minden szinten csak a fenti szintektől eltérő stílustulajdonságokat állítja be. Ezt az alábbi Stílusöröklés szakasz ismerteti részletesebben.
Az alábbi táblázat azokat az elsődleges tulajdonságokat sorolja fel, amelyek DataGridViewCellStyle objektumokat kapnak vagy állítottak be.
| Ingatlan | Osztályok | Leírás |
|---|---|---|
DefaultCellStyle |
DataGridView, DataGridViewColumn, DataGridViewRowés származtatott osztályok | Lekéri vagy beállítja a teljes vezérlőelem (beleértve a fejléccellák) összes cellájának alapértelmezett stílusát egy oszlopban vagy egy sorban. |
| RowsDefaultCellStyle | DataGridView | Lekéri vagy beállítja a vezérlőelem összes sora által használt alapértelmezett cellastílusokat. Ez nem tartalmazza a fejléccellákat. |
| AlternatingRowsDefaultCellStyle | DataGridView | Lekéri vagy beállítja a vezérlőelem sorainak váltakozása által használt alapértelmezett cellastílusokat. A főkönyvszerű effektus létrehozásához használatos. |
| RowHeadersDefaultCellStyle | DataGridView | Lekéri vagy beállítja a vezérlőelem sorfejlécei által használt alapértelmezett cellastílusokat. Ha engedélyezve vannak a vizuális stílusok, az aktuális téma felülírja az előzőt. |
| ColumnHeadersDefaultCellStyle | DataGridView | Lekéri vagy beállítja a vezérlőelem oszlopfejlécei által használt alapértelmezett cellastílusokat. Ha engedélyezve vannak a vizuális stílusok, az aktuális téma felülírja az előzőt. |
| Style | DataGridViewCell és származtatott osztályok | Lekéri vagy beállítja a cellaszinten megadott stílusokat. Ezek a stílusok felülbírálják a magasabb szintektől örökölt stílusokat. |
InheritedStyle |
DataGridViewCell, DataGridViewRow, DataGridViewColumnés származtatott osztályok | Lekéri a cellára, sorra vagy oszlopra jelenleg alkalmazott összes stílust, beleértve a magasabb szintektől örökölt stílusokat is. |
Ahogy fentebb említettük, a stílustulajdonság értékének lekérése automatikusan létrehoz egy új DataGridViewCellStyle objektumot, ha a tulajdonság korábban még nincs beállítva. Az objektumok szükségtelen létrehozásának elkerülése érdekében a sor- és oszloposztályok HasDefaultCellStyle tulajdonságot tartalmaznak, amely alapján megállapíthatja, hogy a DefaultCellStyle tulajdonság be van-e állítva. Hasonlóképpen, a cellaosztályok HasStyle tulajdonsága jelzi, hogy a Style tulajdonság be van-e állítva.
A stílustulajdonságok mindegyike rendelkezik egy megfelelő PropertyNameChanged eseménysel a DataGridView vezérlőelemen. A sor-, oszlop- és cellatulajdonságok esetében az esemény neve "Row", "Column", vagy "Cell" (például RowDefaultCellStyleChanged) kezdődik. Ezek az események akkor fordulnak elő, ha a megfelelő stílustulajdonság egy másik DataGridViewCellStyle objektumra van állítva. Ezek az események nem fordulnak elő, ha DataGridViewCellStyle objektumot kér le egy stílustulajdonságból, és módosítja annak tulajdonságértékeit. A cellastílus objektumok módosításaira adott válasz érdekében kezelje a CellStyleContentChanged eseményt.
Stílusöröklés
Minden DataGridViewCell a InheritedStyle tulajdonságából kapja meg a megjelenését. A tulajdonság által visszaadott DataGridViewCellStyle objektum a DataGridViewCellStyletípusú tulajdonságok hierarchiájából örökli az értékeit. Ezek a tulajdonságok alább szerepelnek abban a sorrendben, amelyben a nem fejléccellák InheritedStyle-ja megkapja az értékeit.
DataGridView.AlternatingRowsDefaultCellStyle (csak a páratlan indexszámú sorok celláihoz)
A sor- és oszlopfejléccellák esetében a InheritedStyle tulajdonságot a forrástulajdonságok alábbi listájában szereplő értékek töltik ki az adott sorrendben.
Az alábbi ábra ezt a folyamatot szemlélteti.
A sorok és oszlopok örökölt stílusait is elérheti. Az oszlop InheritedStyle tulajdonság az alábbi tulajdonságokból örökli az értékeit.
A sor InheritedStyle tulajdonság az alábbi tulajdonságokból örökli az értékeit.
DataGridView.AlternatingRowsDefaultCellStyle (csak a páratlan indexszámú sorok celláihoz)
Egy DataGridViewCellStyle tulajdonság által visszaadott InheritedStyle objektum minden tulajdonsága esetében a tulajdonság értéke a megfelelő lista első cellastílusából származik, amelynek a megfelelő tulajdonsága nem az DataGridViewCellStyle osztály alapértelmezett értékére van beállítva.
Az alábbi táblázat bemutatja, hogyan örökli egy példacella ForeColor tulajdonságértékét az azt tartalmazó oszlopból.
DataGridViewCellStyle típusú tulajdonság |
Példa a visszakeresett objektum ForeColor értékére |
|---|---|
| DataGridViewCell.Style | Color.Empty |
| DataGridViewRow.DefaultCellStyle | Color.Red |
| DataGridView.AlternatingRowsDefaultCellStyle | Color.Empty |
| DataGridView.RowsDefaultCellStyle | Color.Empty |
| DataGridViewColumn.DefaultCellStyle | Color.DarkBlue |
| DataGridView.DefaultCellStyle | Color.Black |
Ebben az esetben a cella sorából származó Color.Red érték a lista első valós értéke. Ez lesz a cella ForeColorInheritedStyle tulajdonságának értéke.
Az alábbi ábra bemutatja, hogy a különböző DataGridViewCellStyle tulajdonságok hogyan örökölhetik az értékeiket különböző helyekről.
A stílusöröklés előnyeinek kihasználásával a teljes vezérlőhöz megfelelő stílusokat adhat meg anélkül, hogy ugyanazokat az információkat több helyen kellene megadnia.
Bár a fejléccellák a leírtak szerint részt vesznek a stílusöröklésben, a ColumnHeadersDefaultCellStyle vezérlőelem RowHeadersDefaultCellStyle és DataGridView tulajdonságai által visszaadott objektumok olyan kezdeti tulajdonságértékekkel rendelkeznek, amelyek felülbírálják a DefaultCellStyle tulajdonság által visszaadott objektum tulajdonságértékeit. Ha azt szeretné, hogy a DefaultCellStyle tulajdonság által visszaadott objektum tulajdonságai a sor- és oszlopfejlécekre vonatkozzanak, a ColumnHeadersDefaultCellStyle által visszaadott objektumok megfelelő tulajdonságait, RowHeadersDefaultCellStyle tulajdonságokat pedig az DataGridViewCellStyle osztályhoz megadott alapértelmezett értékre kell állítania.
Megjegyzés:
Ha a vizualizációs stílusok engedélyezve vannak, a sor- és oszlopfejléceket (a TopLeftHeaderCellkivételével) az aktuális téma automatikusan stílusba rendezi, felülírva a tulajdonságok által megadott stílusokat.
A DataGridViewButtonColumn, DataGridViewImageColumnés DataGridViewCheckBoxColumn típus is inicializálja a DefaultCellStyle oszlop tulajdonság által visszaadott objektum bizonyos értékeit. További információkért tekintse meg az ilyen típusok referenciadokumentációját.
Stílusok dinamikus beállítása
Az adott értékekkel rendelkező cellastílusok testreszabásához implementáljon egy kezelőt a DataGridView.CellFormatting eseményhez. Az esemény kezelői a DataGridViewCellFormattingEventArgs típusú argumentumot kapják. Ez az objektum olyan tulajdonságokat tartalmaz, amelyekkel meghatározhatja a formázandó cella értékét és helyét a DataGridView vezérlőelemben. Ez az objektum egy CellStyle tulajdonságot is tartalmaz, amely a formázott cella InheritedStyle tulajdonságának értékére van inicializálva. Módosíthatja a cellastílus tulajdonságait a cella értékének és helyének megfelelő stílusinformációk megadásához.
Megjegyzés:
A RowPrePaint és a RowPostPaint események is kapnak egy DataGridViewCellStyle objektumot az eseményadatokban, de esetükben ez a sor InheritedStyle tulajdonság másolata csak olvasható célokra, és a rajta végzett módosítások nem befolyásolják a vezérlést.
Az egyes cellák stílusát dinamikusan is módosíthatja az olyan eseményekre reagálva, mint a DataGridView.CellMouseEnter és CellMouseLeave események. Az CellMouseEnter esemény kezelőjében például tárolhatja a cella háttérszínének aktuális értékét (a cella Style tulajdonságán keresztül), majd beállíthatja egy új színre, amely kiemeli a cellát, amikor az egér rámutat rá. A CellMouseLeave esemény kezelőjében visszaállíthatja a háttérszínt az eredeti értékre.
Megjegyzés:
A cella Style tulajdonságában tárolt értékek gyorsítótárazása fontos, függetlenül attól, hogy egy adott stílusérték beállítva van-e. Ha ideiglenesen lecserél egy stílusbeállítást, annak eredeti "nincs beállítva" állapotára történő visszaállítása biztosítja, hogy a cella visszalépjen a stílusbeállítás magasabb szintű örökléséhez. Ha meg kell határoznia a cella tényleges stílusát, függetlenül attól, hogy a stílus öröklődik-e, használja a cella InheritedStyle tulajdonságát.
Lásd még
- 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
- Alapszintű formázás és stílus a Windows Forms DataGridView vezérlőelemben
- Útmutató: Alapértelmezett cellastílusok beállítása a Windows Forms DataGridView vezérlő
- Adatok formázása a Windows Forms DataGridView vezérlőben
.NET Desktop feedback