Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Każda komórka w kontrolce DataGridView może mieć własny styl, taki jak format tekstu, kolor tła, kolor pierwszego planu i czcionka. Zazwyczaj jednak wiele komórek ma określone cechy stylu.
Grupy komórek współużytkujących style mogą zawierać wszystkie komórki w określonych wierszach lub kolumnach, wszystkie komórki zawierające określone wartości lub wszystkie komórki w kontrolce. Ponieważ te grupy nakładają się na siebie, każda komórka może otrzymywać informacje o stylizacji z więcej niż jednego miejsca. Na przykład można chcieć, aby każda komórka w kontrolce DataGridView używała tej samej czcionki, ale tylko komórki w kolumnach walutowych korzystały z formatu waluty, a tylko komórki walutowe z liczbami ujemnymi używały czerwonego koloru pierwszego planu.
Klasa DataGridViewCellStyle
Klasa DataGridViewCellStyle zawiera następujące właściwości związane ze stylem wizualizacji:
Ta klasa zawiera również następujące właściwości związane z formatowaniem:
Aby uzyskać więcej informacji na temat tych właściwości i innych właściwości stylu komórki, zapoznaj się z dokumentacją referencyjną DataGridViewCellStyle oraz tematami wymienionymi w poniższej sekcji "Patrz także".
Używanie obiektów DataGridViewCellStyle
Obiekty DataGridViewCellStyle można pobrać z różnych właściwości klas DataGridView, DataGridViewColumn, DataGridViewRowi DataGridViewCell oraz ich pochodnych. Jeśli jedna z tych właściwości nie została jeszcze ustawiona, pobranie jej wartości spowoduje utworzenie nowego obiektu DataGridViewCellStyle. Możesz również utworzyć wystąpienie własnych obiektów DataGridViewCellStyle i przypisać je do tych właściwości.
Można uniknąć niepotrzebnego duplikowania informacji o stylu poprzez udostępnianie obiektów DataGridViewCellStyle pomiędzy wieloma elementami DataGridView. Ponieważ style ustawiane na poziomie kontrolki, kolumny i wiersza są filtrowane przez poszczególne poziomy do poziomu komórki, można również uniknąć duplikowania stylów, ustawiając tylko te właściwości stylu na każdym poziomie, które różnią się od powyższych poziomów. Opisano to bardziej szczegółowo w sekcji Dziedziczenie stylu, która znajduje się poniżej.
W poniższej tabeli wymieniono podstawowe właściwości, które pobierają lub ustawiają obiekty DataGridViewCellStyle.
| Majątek | Klasy | Opis |
|---|---|---|
DefaultCellStyle |
DataGridView, DataGridViewColumn, DataGridViewRowi klasy pochodne | Pobiera lub ustawia domyślne style używane przez wszystkie komórki w całej kontrolce (w tym komórki nagłówka), w kolumnie lub w wierszu. |
| RowsDefaultCellStyle | DataGridView | Pobiera lub ustawia domyślne style komórek używane przez wszystkie wiersze w kontrolce. Nie obejmuje to komórek nagłówka. |
| AlternatingRowsDefaultCellStyle | DataGridView | Pobiera lub ustawia domyślne style komórek używane przez naprzemienne wiersze w kontrolce. Służy do tworzenia efektu przypominającego rejestr. |
| RowHeadersDefaultCellStyle | DataGridView | Pobiera lub ustawia domyślne style komórek używane przez kontrolkę dla nagłówków wierszy. Zastąpiony przez bieżący motyw, jeśli są włączone style wizualne. |
| ColumnHeadersDefaultCellStyle | DataGridView | Pobiera lub ustawia domyślne style komórek stosowane w nagłówkach kolumn kontrolki. Zastąpiony przez bieżący motyw, jeśli są włączone style wizualne. |
| Style | DataGridViewCell i klasy pochodne | Pobiera lub ustawia style określone na poziomie komórki. Te style zastępują te dziedziczone z wyższych poziomów. |
InheritedStyle |
DataGridViewCell, DataGridViewRow, DataGridViewColumni klasy pochodne | Pobiera wszystkie style aktualnie stosowane do komórki, wiersza lub kolumny w tabeli, w tym style odziedziczone z wyższych hierarchicznych poziomów. |
Jak wspomniano powyżej, pobranie wartości właściwości stylu automatycznie tworzy nowe wystąpienie obiektu DataGridViewCellStyle, jeśli ta właściwość nie została wcześniej ustawiona. Aby uniknąć niepotrzebnego tworzenia tych obiektów, klasy wierszy i kolumn mają właściwość HasDefaultCellStyle, którą można sprawdzić, aby określić, czy właściwość DefaultCellStyle została ustawiona. Podobnie klasy komórek mają właściwość HasStyle, która wskazuje, czy właściwość Style została ustawiona.
Każda z właściwości stylu ma odpowiadające jej zdarzenie PropertyNameChanged dla kontrolki DataGridView. W przypadku właściwości wierszy, kolumn i komórek nazwa zdarzenia zaczyna się od "Row", "Column" lub "Cell" (na przykład RowDefaultCellStyleChanged). Każde z tych zdarzeń występuje, gdy odpowiednia właściwość stylu jest ustawiona na inny obiekt DataGridViewCellStyle. Te zdarzenia nie występują podczas pobierania obiektu DataGridViewCellStyle z właściwości stylu i modyfikowania jej wartości właściwości. Aby odpowiedzieć na zmiany w obiektach stylu komórki, zarządzaj zdarzeniem CellStyleContentChanged.
Dziedziczenie stylu
Każdy DataGridViewCell uzyskuje swój wygląd z właściwości InheritedStyle. Obiekt DataGridViewCellStyle zwrócony przez tę właściwość dziedziczy jego wartości z hierarchii właściwości typu DataGridViewCellStyle. Te właściwości są wymienione poniżej w kolejności, w której InheritedStyle dla komórek innych niż nagłówkowe uzyskuje swoje wartości.
DataGridView.AlternatingRowsDefaultCellStyle (tylko w przypadku komórek w wierszach z nieparzystnymi liczbami indeksów)
W przypadku komórek nagłówka wierszy i kolumn właściwość InheritedStyle jest wypełniana wartościami z poniższej listy właściwości źródłowych w podanej kolejności.
Na poniższym diagramie przedstawiono ten proces.
Możesz również uzyskać dostęp do stylów dziedziczonych przez określone wiersze i kolumny. Właściwość kolumny InheritedStyle dziedziczy swoje wartości z następujących właściwości.
Właściwość wiersza InheritedStyle dziedziczy swoje wartości z następujących właściwości.
DataGridView.AlternatingRowsDefaultCellStyle (tylko w przypadku komórek w wierszach z nieparzystnymi liczbami indeksów)
Dla każdej właściwości w obiekcie DataGridViewCellStyle zwróconym przez właściwość InheritedStyle wartość właściwości jest uzyskiwana z pierwszego stylu komórki na odpowiedniej liście, która ma odpowiednią właściwość ustawioną na wartość inną niż wartości domyślne klasy DataGridViewCellStyle.
W poniższej tabeli pokazano, jak wartość właściwości ForeColor dla przykładowej komórki jest dziedziczona z kolumny, która ją zawiera.
Właściwość typu DataGridViewCellStyle |
Przykład ForeColor wartość dla pobranego obiektu |
|---|---|
| DataGridViewCell.Style | Color.Empty |
| DataGridViewRow.DefaultCellStyle | Color.Red |
| DataGridView.AlternatingRowsDefaultCellStyle | Color.Empty |
| DataGridView.RowsDefaultCellStyle | Color.Empty |
| DataGridViewColumn.DefaultCellStyle | Color.DarkBlue |
| DataGridView.DefaultCellStyle | Color.Black |
W tym przypadku wartość Color.Red z wiersza komórki jest pierwszą rzeczywistą wartością na liście. Staje się to wartością właściwości ForeColor komórki InheritedStyle.
Na poniższym diagramie pokazano, jak różne właściwości DataGridViewCellStyle mogą dziedziczyć wartości z rozmaitych źródeł.
Korzystając z dziedziczenia stylu, można podać odpowiednie style dla całej kontrolki bez konieczności określania tych samych informacji w wielu miejscach.
Chociaż komórki nagłówka uczestniczą w dziedziczeniu stylu zgodnie z opisem, obiekty zwracane przez właściwości ColumnHeadersDefaultCellStyle i RowHeadersDefaultCellStyle kontrolki DataGridView mają początkowe wartości właściwości, które zastępują wartości właściwości obiektu zwróconego przez właściwość DefaultCellStyle. Jeśli chcesz, aby właściwości ustawione dla obiektu zwróconego przez właściwość DefaultCellStyle były zastosowane do nagłówków wierszy i kolumn, należy ustawić odpowiednie właściwości obiektów zwróconych przez właściwości ColumnHeadersDefaultCellStyle i RowHeadersDefaultCellStyle na domyślne wskazane dla klasy DataGridViewCellStyle.
Uwaga / Notatka
Jeśli style wizualizacji są włączone, nagłówki wierszy i kolumn (z wyjątkiem TopLeftHeaderCell) są automatycznie stylowane przez bieżący motyw, przesłaniając wszystkie style określone przez te właściwości.
Typy DataGridViewButtonColumn, DataGridViewImageColumni DataGridViewCheckBoxColumn również inicjują niektóre wartości obiektu zwracane przez właściwość kolumny DefaultCellStyle. Aby uzyskać więcej informacji, zobacz dokumentację referencyjną dla tych typów.
Dynamiczne ustawianie stylów
Aby dostosować style komórek z określonymi wartościami, zaimplementuj procedurę obsługi dla zdarzenia DataGridView.CellFormatting. Programy obsługi dla tego zdarzenia otrzymują argument typu DataGridViewCellFormattingEventArgs. Ten obiekt zawiera właściwości, które pozwalają określić wartość komórki sformatowanej wraz z jego lokalizacją w kontrolce DataGridView. Ten obiekt zawiera również właściwość CellStyle, która jest zainicjowana do wartości właściwości InheritedStyle komórki, która jest formatowana. Możesz zmodyfikować właściwości stylu komórki, aby określić informacje o stylu odpowiednie dla wartości i lokalizacji komórki.
Uwaga / Notatka
Zdarzenia RowPrePaint i RowPostPaint również otrzymują obiekt DataGridViewCellStyle w danych zdarzenia, ale w ich przypadku, jest to kopia właściwości z wiersza InheritedStyle wyłącznie do celów odczytu, a zmiany w tej kopii nie wpływają na kontrolkę.
Można również dynamicznie modyfikować style poszczególnych komórek w odpowiedzi na zdarzenia, takie jak zdarzenia DataGridView.CellMouseEnter i CellMouseLeave. Na przykład w procedurze obsługi zdarzenia CellMouseEnter można przechowywać bieżącą wartość koloru tła komórki (pobraną za pośrednictwem właściwości Style komórki), a następnie ustawić go na nowy kolor, który będzie wyróżniać komórkę, gdy wskaźnik myszy na nim zatrzyma. W procedurze obsługi zdarzenia CellMouseLeave można przywrócić kolor tła do oryginalnej wartości.
Uwaga / Notatka
Buforowanie wartości przechowywanych we właściwości Style komórki jest ważne niezależnie od tego, czy ustawiono konkretną wartość stylu. Jeśli tymczasowo zastąpisz ustawienie stylu, przywrócenie go do oryginalnego stanu "nie ustawiono" gwarantuje, że komórka wróci do dziedziczenia ustawienia stylu z wyższego poziomu. Jeśli musisz określić rzeczywisty styl dla komórki niezależnie od tego, czy styl jest dziedziczony, użyj właściwości InheritedStyle komórki.
Zobacz także
- 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
- Podstawowe formatowanie i stylizacja w kontrolce DataGridView formularzy systemu Windows
- Jak ustawić domyślne style komórek dla kontrolki DataGridView w formularzach systemu Windows
- Formatowanie danych w kontrolce DataGridView w Windows Forms
.NET Desktop feedback