Styly buňky v ovládacím prvku Windows Forms DataGridView

Každá buňka v ovládacím DataGridView prvku 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 DataGridView prvku používala stejné písmo, ale jenom buňky ve sloupcích měny, aby používaly formát měny, a pouze buňky měny se zápornými čísly, aby používaly červenou barvu popředí.

DataGridViewCellStyle – třída

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 DataGridViewCellStyle referenční dokumentaci a tématech uvedených v části Viz také níže.

Použití objektů DataGridViewCellStyle

Objekty můžete načíst DataGridViewCellStyle z různých vlastností DataGridView, DataGridViewColumn, DataGridViewRowa třídy a DataGridViewCell jejich odvozené třídy. Pokud ještě nebyla nastavena jedna z těchto vlastností, načtením jeho hodnoty se vytvoří nový DataGridViewCellStyle objekt. Můžete také vytvořit instanci vlastních DataGridViewCellStyle objektů a přiřadit je k těmto vlastnostem.

Nepotřebné duplikování informací o stylu můžete zabránit sdílením DataGridViewCellStyle objektů mezi více DataGridView prvky. Vzhledem k tomu, že styly nastavené v ovládacím prvku, sloupci a úrovních řádků se filtrují dolů na každou úroveň na úrovni buňky, můžete se také vyhnout duplikaci stylu nastavením pouze těch vlastností stylu na každé úrovni, která se liší od výše uvedených úrovní. 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.

Vlastnost Třídy 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. Neobsahuje buňky záhlaví.
AlternatingRowsDefaultCellStyle DataGridView Získá nebo nastaví výchozí styly buněk používané střídavým řádky v ovládacím prvku. Slouží k vytvoření efektu podobného registru.
RowHeadersDefaultCellStyle DataGridView Získá nebo nastaví výchozí styly buněk používané záhlavími řádků ovládacího prvku. Přepíše se aktuálním motivem, pokud jsou povolené styly vizuálů.
ColumnHeadersDefaultCellStyle DataGridView Získá nebo nastaví výchozí styly buněk používané záhlavími sloupců ovládacího prvku. Přepíše se aktuálním motivem, pokud jsou povolené styly vizuálů.
Style DataGridViewCell a odvozené třídy Získá nebo nastaví styly zadané na úrovni buňky. Tyto styly přepíší zděděné 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 se tyto objekty zbytečně nevytvářely, mají HasDefaultCellStyle třídy řádků a sloupců vlastnost, kterou můžete zkontrolovat a určit, zda DefaultCellStyle byla vlastnost nastavena. Podobně třídy buněk mají HasStyle vlastnost, která označuje, zda Style byla vlastnost nastavena.

Každá z vlastností stylu má v ovládacím prvku odpovídající událost PropertyNameChanged.DataGridView U vlastností řádků, sloupců a buněk začíná název události na "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 objekt. K těmto událostem nedojde, když načtete DataGridViewCellStyle objekt z vlastnosti stylu a upravíte jeho hodnoty vlastností. Pokud chcete reagovat na změny samotných objektů stylu buňky, zpracujte CellStyleContentChanged událost.

Dědičnost stylů

Každý DataGridViewCell získá svůj vzhled ze své InheritedStyle vlastnosti. 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 buňky bez záhlaví získávají své hodnoty.

  1. DataGridViewCell.Style

  2. DataGridViewRow.DefaultCellStyle

  3. DataGridView.AlternatingRowsDefaultCellStyle (pouze pro buňky v řádcích s lichými čísly indexu)

  4. DataGridView.RowsDefaultCellStyle

  5. DataGridViewColumn.DefaultCellStyle

  6. DataGridView.DefaultCellStyle

U buněk InheritedStyle záhlaví řádků a sloupců je vlastnost naplněna hodnotami z následujícího seznamu zdrojových vlastností v daném pořadí.

  1. DataGridViewCell.Style

  2. DataGridView.ColumnHeadersDefaultCellStyle nebo DataGridView.RowHeadersDefaultCellStyle

  3. DataGridView.DefaultCellStyle

Tento proces znázorňuje následující diagram.

Properties of type DataGridViewCellStyle

Ke stylům zděděným podle konkrétních řádků a sloupců můžete také přistupovat. Vlastnost sloupce InheritedStyle dědí své hodnoty z následujících vlastností.

  1. DataGridViewColumn.DefaultCellStyle

  2. DataGridView.DefaultCellStyle

Vlastnost řádku InheritedStyle dědí své hodnoty z následujících vlastností.

  1. DataGridViewRow.DefaultCellStyle

  2. DataGridView.AlternatingRowsDefaultCellStyle (pouze pro buňky v řádcích s lichými čísly indexu)

  3. DataGridView.RowsDefaultCellStyle

  4. DataGridView.DefaultCellStyle

Pro každou vlastnost v DataGridViewCellStyle objektu vrácené InheritedStyle vlastností, je hodnota vlastnosti získána z prvního stylu buňky v příslušném seznamu, který má odpovídající vlastnost nastavenou na jinou hodnotu než DataGridViewCellStyle výchozí třídy.

Následující tabulka ukazuje, jak ForeColor je hodnota vlastnosti 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ě Color.Red je hodnota z řádku buňky první skutečnou hodnotou v seznamu. Tím se stane ForeColor hodnota vlastnosti buňky InheritedStyle.

Následující diagram znázorňuje, jak různé DataGridViewCellStyle vlastnosti mohou dědit jejich hodnoty z různých míst.

DataGridView property-value inheritance

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é ColumnHeadersDefaultCellStyle a RowHeadersDefaultCellStyle vlastnosti DataGridView ovládacího prvku mají počáteční hodnoty vlastností, které přepisují hodnoty vlastností objektu vráceného DefaultCellStyle vlastností. Pokud chcete, aby se vlastnosti nastavené pro objekt vrácený DefaultCellStyle vlastností použily na záhlaví řádků a sloupců, je nutné nastavit odpovídající vlastnosti objektů vrácených vlastnostmi ColumnHeadersDefaultCellStyle a RowHeadersDefaultCellStyle vlastnosti na výchozí hodnoty uvedené pro DataGridViewCellStyle třídu.

Poznámka:

Pokud jsou povoleny styly vizuálů, záhlaví řádků a sloupců (s výjimkou TopLeftHeaderCell) se automaticky stylizují aktuálním motivem a přepíše všechny styly určené těmito vlastnostmi.

, DataGridViewButtonColumnDataGridViewImageColumna DataGridViewCheckBoxColumn typy také inicializovat některé hodnoty objektu vrácený column DefaultCellStyle vlastnost. 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 DataGridView.CellFormatting události. 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 DataGridView prvku. Tento objekt také obsahuje CellStyle vlastnost, která je inicializována na hodnotu InheritedStyle vlastnosti buňky, která je formátována. 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:

RowPostPaint Události RowPrePaint také obdrží DataGridViewCellStyle objekt v datech události, ale v jejich případě je to kopie vlastnosti řádku InheritedStyle pro účely jen pro čtení a změny v něm nemají vliv na ovládací prvek.

Styly jednotlivých buněk můžete také dynamicky upravovat v reakci na události, jako DataGridView.CellMouseEnter jsou události 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čtené prostřednictvím vlastnosti buňky Style ) a pak ji nastavit na novou barvu, která zvýrazní buňku, když na ni najede myší. V obslužné rutině CellMouseLeave události pak můžete obnovit barvu pozadí na původní hodnotu.

Poznámka:

Ukládání do mezipaměti hodnoty uložené ve vlastnosti buňky Style jsou důležité bez ohledu na to, zda je nastavena konkrétní hodnota stylu. Pokud dočasně nahradíte nastavení stylu, obnovíte ho do původního stavu Nenastavit, aby se buňka vrátila k dědění 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 buňky InheritedStyle .

Viz také