Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Každá buňka v ovládacím prvku DataGridView může mít svůj vlastní styl, například formát textu, barvu pozadí, barvu popředí a písmo. Obvykle ale několik buněk bude sdílet určité vlastnosti stylu.
Skupiny buněk, které sdílejí styly, můžou obsahovat všechny buňky v určitých řádcích nebo sloupcích, všechny buňky obsahující určité hodnoty nebo všechny buňky v ovládacím prvku. Vzhledem k tomu, že se tyto skupiny překrývají, může každá buňka získat informace o stylu z více než jednoho místa. Můžete například chtít, aby každá buňka v ovládacím prvku DataGridView používala stejné písmo, ale pouze buňky ve sloupcích měny používaly formát měny a pouze buňky měny se zápornými čísly pro použití červené barvy popředí.
Třída DataGridViewCellStyle
Třída DataGridViewCellStyle obsahuje následující vlastnosti související se stylem vizuálu:
Tato třída obsahuje také následující vlastnosti související s formátováním:
Další informace o těchto vlastnostech a dalších vlastnostech stylu buněk najdete v referenční dokumentaci k DataGridViewCellStyle a tématech uvedených v části Viz také níže.
Použití objektů DataGridViewCellStyle
Objekty DataGridViewCellStyle můžete načíst z různých vlastností tříd DataGridView, DataGridViewColumn, DataGridViewRowa DataGridViewCell a jejich odvozených tříd. Pokud ještě nebyla nastavena jedna z těchto vlastností, načtením jeho hodnoty se vytvoří nový objekt DataGridViewCellStyle. Můžete také vytvořit instanci vlastních DataGridViewCellStyle objektů a přiřadit je k těmto vlastnostem.
Abyste se vyhnuli zbytečnému duplikování informací o stylu, můžete sdílet DataGridViewCellStyle objekty mezi více prvky DataGridView. Vzhledem k tomu, že styly nastavené na úrovních ovládacího prvku, sloupce a řádku se aplikují až na úroveň jednotlivých buněk, můžete se vyhnout duplikaci stylů tím, že na každé úrovni nastavíte pouze ty vlastnosti stylu, které se liší od úrovní nad nimi. Toto je podrobněji popsáno v části Dědičnost stylu, která následuje.
Následující tabulka uvádí primární vlastnosti, které získávají nebo nastavují DataGridViewCellStyle objekty.
| Vlastnictví | Vyučování | Popis |
|---|---|---|
DefaultCellStyle |
DataGridView, DataGridViewColumn, DataGridViewRowa odvozené třídy | Získá nebo nastaví výchozí styly používané všemi buňkami v celém ovládacím prvku (včetně buněk záhlaví), ve sloupci nebo řádku. |
| RowsDefaultCellStyle | DataGridView | Získá nebo nastaví výchozí styly buněk používané všemi řádky v ovládacím prvku. Toto nezahrnuje buňky záhlaví. |
| AlternatingRowsDefaultCellStyle | DataGridView | Získá nebo nastaví výchozí styly buněk používané střídavými řádky v ovládacím prvku. Slouží k vytvoření efektu podobného účetní knize. |
| RowHeadersDefaultCellStyle | DataGridView | Získá nebo nastaví výchozí styly buněk používané záhlavími řádků ovládacího prvku. Aktuální motiv přepíše nastavení, pokud jsou povoleny vizuální styly. |
| ColumnHeadersDefaultCellStyle | DataGridView | Získá nebo nastaví výchozí styly buněk používané záhlavími sloupců ovládacího prvku. Aktuální motiv přepíše nastavení, pokud jsou povoleny vizuální styly. |
| Style | DataGridViewCell a odvozené třídy | Získá nebo nastaví styly zadané na úrovni buňky. Tyto styly přepíší ty styly, které jsou zděděny z vyšších úrovní. |
InheritedStyle |
DataGridViewCell, DataGridViewRow, DataGridViewColumna odvozené třídy | Získá všechny styly, které jsou aktuálně použity na buňku, řádek nebo sloupec, včetně stylů zděděných z vyšších úrovní. |
Jak je uvedeno výše, získání hodnoty vlastnosti stylu automaticky vytvoří instanci nového DataGridViewCellStyle objektu, pokud vlastnost nebyla dříve nastavena. Aby nedocházelo k zbytečnému vytváření těchto objektů, třídy řádků a sloupců mají HasDefaultCellStyle vlastnost, kterou můžete zkontrolovat, zda byla nastavena DefaultCellStyle vlastnost. Podobně třídy buněk mají HasStyle vlastnost, která označuje, zda Style vlastnost byla nastavena.
Každá z vlastností stylu má odpovídající PropertyNameChanged událost na ovládacím prvku DataGridView. U vlastností řádků, sloupců a buněk začíná název události "Row", "Column" nebo "Cell" (například RowDefaultCellStyleChanged). Každá z těchto událostí nastane, když je odpovídající vlastnost stylu nastavena na jiný DataGridViewCellStyle objektu. K těmto událostem nedojde při načtení DataGridViewCellStyle objektu z vlastnosti stylu a úpravě jeho hodnot vlastností. Pokud chcete reagovat na změny samotných objektů stylu buňky, zpracujte událost CellStyleContentChanged.
Dědičnost stylu
Každý DataGridViewCell získá svůj vzhled z vlastnosti InheritedStyle. Objekt DataGridViewCellStyle vrácený touto vlastností dědí své hodnoty z hierarchie vlastností typu DataGridViewCellStyle. Tyto vlastnosti jsou uvedeny níže v pořadí, v jakém InheritedStyle pro buňky bez záhlaví získá své hodnoty.
DataGridView.AlternatingRowsDefaultCellStyle (pouze pro buňky v řádcích s lichými indexy)
U buněk záhlaví řádků a sloupců je vlastnost InheritedStyle naplněna hodnotami z následujícího seznamu zdrojových vlastností v daném pořadí.
Tento proces znázorňuje následující diagram.
Také můžete přistupovat ke stylům zděděným konkrétními řádky a sloupci. Sloupec InheritedStyle dědí své vlastnosti z následujících vlastností.
Vlastnost InheritedStyle řádku dědí své hodnoty z následujících vlastností.
DataGridView.AlternatingRowsDefaultCellStyle (pouze pro buňky v řádcích s lichými indexy)
Pro každou vlastnost v objektu DataGridViewCellStyle vráceném vlastností InheritedStyle je hodnota vlastnosti získána z prvního stylu buňky v příslušném seznamu, který má danou vlastnost nastavenou na hodnotu jinou než výchozí hodnoty třídy DataGridViewCellStyle.
Následující tabulka ukazuje, jak je hodnota vlastnosti ForeColor pro ukázkovou buňku zděděna z jejího obsahujícího sloupce.
Vlastnost typu DataGridViewCellStyle |
Příklad ForeColor hodnoty pro načtený 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 |
V tomto případě je hodnota Color.Red z řádku buňky první skutečnou hodnotou v seznamu. Toto se stane hodnotou vlastnosti ForeColor buňky InheritedStyle.
Následující diagram znázorňuje, jak různé vlastnosti DataGridViewCellStyle mohou dědit jejich hodnoty z různých míst.
Když využijete dědičnost stylů, můžete poskytnout vhodné styly pro celý ovládací prvek, aniž byste museli zadat stejné informace na více místech.
I když se buňky záhlaví účastní dědičnosti stylu, jak je popsáno, objekty vrácené vlastnostmi ColumnHeadersDefaultCellStyle a RowHeadersDefaultCellStyle ovládacího prvku DataGridView mají počáteční hodnoty vlastností, které přepisují hodnoty vlastností objektu vráceného vlastností DefaultCellStyle. Chcete-li, aby se vlastnosti nastavené pro objekt vrácený vlastností DefaultCellStyle použily u záhlaví řádků a sloupců, je nutné nastavit odpovídající vlastnosti objektů vrácených vlastnostmi ColumnHeadersDefaultCellStyle a RowHeadersDefaultCellStyle na výchozí hodnoty uvedené pro třídu DataGridViewCellStyle.
Poznámka:
Pokud jsou styly vizuálů povolené, záhlaví řádků a sloupců (s výjimkou TopLeftHeaderCell) se automaticky stylizují podle aktuálního motivu a přepíše všechny styly určené těmito vlastnostmi.
Typy DataGridViewButtonColumn, DataGridViewImageColumna DataGridViewCheckBoxColumn také inicializují některé hodnoty objektu vrácené vlastností DefaultCellStyle sloupce. Další informace najdete v referenční dokumentaci k těmto typům.
Dynamické nastavení stylů
Chcete-li přizpůsobit styly buněk s konkrétními hodnotami, implementujte obslužnou rutinu pro událost DataGridView.CellFormatting. Obslužné rutiny pro tuto událost obdrží argument typu DataGridViewCellFormattingEventArgs. Tento objekt obsahuje vlastnosti, které umožňují určit hodnotu buňky, která je formátována spolu s jeho umístěním v ovládacím prvku DataGridView. Tento objekt také obsahuje vlastnost CellStyle, která je inicializována hodnotou vlastnosti InheritedStyle formátované buňky. Vlastnosti stylu buňky můžete upravit tak, aby byly zadány informace o stylu odpovídající hodnotě buňky a umístění.
Poznámka:
Události RowPrePaint a RowPostPaint obdrží také objekt DataGridViewCellStyle v datech události, ale v jejich případě se jedná o kopii vlastnosti řádku InheritedStyle pro účely jen pro čtení a změny v něm nemají vliv na ovládací prvek.
Můžete také dynamicky měnit styly jednotlivých buněk v reakci na události, jako jsou DataGridView.CellMouseEnter a CellMouseLeave události. Například v obslužné rutině události CellMouseEnter můžete uložit aktuální hodnotu barvy pozadí buňky (načtenou prostřednictvím vlastnosti Style buňky) a pak ji nastavit na novou barvu, která zvýrazní buňku, když na ni najede myší. V obslužné rutině události CellMouseLeave pak můžete obnovit barvu pozadí na původní hodnotu.
Poznámka:
Ukládání hodnot uložených ve vlastnosti Style buňky do mezipaměti je důležité bez ohledu na to, jestli je nastavena konkrétní hodnota stylu. Pokud dočasně změníte nastavení stylu, obnovení do původního stavu „nenastaveno“ zajistí, že buňka opět zdědí nastavení stylu z vyšší úrovně. Pokud potřebujete určit skutečný styl pro buňku bez ohledu na to, zda je styl zděděný, použijte vlastnost InheritedStyle buňky.
Viz také
- 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
- základní formátování a stylování v ovládacím prvku Windows Forms DataGridView
- Jak nastavit výchozí styly buněk pro ovládací prvek DataGridView ve Windows Forms
- formátování dat v ovládacím prvku Windows Forms DataGridView
.NET Desktop feedback