Windows Forms DataGridView Denetimindeki Hücre Stilleri

Denetimdeki her hücrenin DataGridView metin biçimi, arka plan rengi, ön plan rengi ve yazı tipi gibi kendi stili olabilir. Ancak genellikle birden çok hücre belirli stil özelliklerini paylaşır.

Stilleri paylaşan hücre grupları, belirli satır veya sütunlar içindeki tüm hücreleri, belirli değerleri içeren tüm hücreleri veya denetimdeki tüm hücreleri içerebilir. Bu gruplar çakıştığı için, her hücre stil bilgilerini birden fazla yerden alabilir. Örneğin, denetimdeki DataGridView her hücrenin aynı yazı tipini kullanmasını, ancak yalnızca para birimi sütunlarındaki hücrelerin para birimi biçimini kullanmasını ve yalnızca negatif sayı içeren para birimi hücrelerinin kırmızı ön plan rengi kullanmasını isteyebilirsiniz.

DataGridViewCellStyle Sınıfı

DataGridViewCellStyle sınıfı görsel stiliyle ilgili aşağıdaki özellikleri içerir:

Bu sınıf, biçimlendirmeyle ilgili aşağıdaki özellikleri de içerir:

Bu özellikler ve diğer hücre stili özellikler hakkında daha fazla bilgi için aşağıdaki Başvuru belgelerine ve Ayrıca Bkz bölümünde listelenen konulara bakın DataGridViewCellStyle .

DataGridViewCellStyle Nesnelerini Kullanma

, , DataGridViewRowDataGridViewColumnve sınıflarının DataGridViewçeşitli özelliklerinden ve DataGridViewCell türetilmiş sınıflarından nesneleri alabilirsinizDataGridViewCellStyle. Bu özelliklerden biri henüz ayarlanmamışsa, değerinin alınması yeni DataGridViewCellStyle bir nesne oluşturur. Ayrıca kendi DataGridViewCellStyle nesnelerinizin örneğini oluşturabilir ve bunları bu özelliklere atayabilirsiniz.

Nesneleri birden çok DataGridView öğe arasında paylaşarak DataGridViewCellStyle stil bilgilerinin gereksiz şekilde çoğaltılmasını önleyebilirsiniz. Denetim, sütun ve satır düzeylerinde ayarlanan stiller her düzeyi hücre düzeyine kadar filtrelediğinden, yukarıdaki düzeylerden farklı olan her düzeyde yalnızca bu stil özelliklerini ayarlayarak stil yinelemesini önleyebilirsiniz. Bu, aşağıdaki Stil Devralma bölümünde daha ayrıntılı olarak açıklanmıştır.

Aşağıdaki tabloda nesneleri alan veya ayarlayan DataGridViewCellStyle birincil özellikler listelenir.

Özellik Sınıflar Tanım
DefaultCellStyle DataGridView, DataGridViewColumn, DataGridViewRowve türetilmiş sınıflar Denetimin tamamında (üst bilgi hücreleri dahil), sütundaki veya satırdaki tüm hücreler tarafından kullanılan varsayılan stilleri alır veya ayarlar.
RowsDefaultCellStyle DataGridView Denetimdeki tüm satırlar tarafından kullanılan varsayılan hücre stillerini alır veya ayarlar. Bu, üst bilgi hücrelerini içermez.
AlternatingRowsDefaultCellStyle DataGridView Denetimdeki satırları değiştirerek kullanılan varsayılan hücre stillerini alır veya ayarlar. Kayıt defteri benzeri bir efekt oluşturmak için kullanılır.
RowHeadersDefaultCellStyle DataGridView Denetimin satır üst bilgileri tarafından kullanılan varsayılan hücre stillerini alır veya ayarlar. Görsel stiller etkinse geçerli tema tarafından geçersiz kılınabilir.
ColumnHeadersDefaultCellStyle DataGridView Denetimin sütun başlıkları tarafından kullanılan varsayılan hücre stillerini alır veya ayarlar. Görsel stiller etkinse geçerli tema tarafından geçersiz kılınabilir.
Style DataGridViewCell ve türetilmiş sınıflar Hücre düzeyinde belirtilen stilleri alır veya ayarlar. Bu stiller, daha yüksek düzeylerden devralınanları geçersiz kılar.
InheritedStyle DataGridViewCell, DataGridViewRow, DataGridViewColumnve türetilmiş sınıflar Daha yüksek düzeylerden devralınan stiller de dahil olmak üzere hücreye, satıra veya sütuna uygulanmış olan tüm stilleri alır.

Yukarıda belirtildiği gibi, bir stil özelliğinin değerini almak, özellik daha önce ayarlanmamışsa otomatik olarak yeni DataGridViewCellStyle bir nesnenin örneğini oluşturur. Bu nesnelerin gereksiz yere oluşturulmasını önlemek için, satır ve sütun sınıflarının özelliğin ayarlanıp ayarlanmadığını DefaultCellStyle belirlemek için denetleyebileceğiniz bir HasDefaultCellStyle özelliği vardır. Benzer şekilde, hücre sınıflarının özelliğin ayarlanıp ayarlanmadığını Style gösteren bir HasStyle özelliği vardır.

Stil özelliklerinin her birinin denetiminde DataGridView karşılık gelen bir PropertyNameChanged olayı vardır. Satır, sütun ve hücre özellikleri için olayın adı "", "RowColumn" veya "Cell" ile başlar (örneğin, RowDefaultCellStyleChanged). Bu olayların her biri, ilgili stil özelliği farklı DataGridViewCellStyle bir nesneye ayarlandığında gerçekleşir. Bir stil özelliğinden nesne DataGridViewCellStyle aldığınızda ve özellik değerlerini değiştirdiğinizde bu olaylar gerçekleşmez. Hücre stili nesnelerindeki değişiklikleri yanıtlamak için olayı işleyebilir CellStyleContentChanged .

Stil Devralımı

Her DataGridViewCell birinin görünümü kendi özelliğinden InheritedStyle alır. DataGridViewCellStyle Bu özellik tarafından döndürülen nesne, değerlerini türündeki DataGridViewCellStylebir özellik hiyerarşisinden devralır. Bu özellikler, üst bilgi olmayan hücreler için değerlerini alma sırasına InheritedStyle göre aşağıda listelenmiştir.

  1. DataGridViewCell.Style

  2. DataGridViewRow.DefaultCellStyle

  3. DataGridView.AlternatingRowsDefaultCellStyle (yalnızca tek dizin numarasına sahip satırlardaki hücreler için)

  4. DataGridView.RowsDefaultCellStyle

  5. DataGridViewColumn.DefaultCellStyle

  6. DataGridView.DefaultCellStyle

Satır ve sütun üst bilgisi hücreleri için özellik, InheritedStyle verilen sırada aşağıdaki kaynak özellikler listesinde yer alan değerlerle doldurulur.

  1. DataGridViewCell.Style

  2. DataGridView.ColumnHeadersDefaultCellStyle veya DataGridView.RowHeadersDefaultCellStyle

  3. DataGridView.DefaultCellStyle

Aşağıdaki diyagramda bu işlem gösterilmektedir.

Properties of type DataGridViewCellStyle

Belirli satırlar ve sütunlar tarafından devralınan stillere de erişebilirsiniz. column InheritedStyle özelliği, değerlerini aşağıdaki özelliklerden devralır.

  1. DataGridViewColumn.DefaultCellStyle

  2. DataGridView.DefaultCellStyle

Row InheritedStyle özelliği, değerlerini aşağıdaki özelliklerden devralır.

  1. DataGridViewRow.DefaultCellStyle

  2. DataGridView.AlternatingRowsDefaultCellStyle (yalnızca tek dizin numarasına sahip satırlardaki hücreler için)

  3. DataGridView.RowsDefaultCellStyle

  4. DataGridView.DefaultCellStyle

Bir özellik tarafından InheritedStyle döndürülen bir DataGridViewCellStyle nesnedeki her özellik için, özellik değeri, ilgili özelliğin sınıf varsayılanları dışında bir değere ayarlandığı uygun listedeki ilk hücre stilinden DataGridViewCellStyle alınır.

Aşağıdaki tabloda, bir örnek hücrenin özellik değerinin ForeColor içeren sütunundan nasıl devralındığı gösterilmektedir.

Türün özelliği DataGridViewCellStyle Alınan nesne için örnek ForeColor değer
DataGridViewCell.Style Color.Empty
DataGridViewRow.DefaultCellStyle Color.Red
DataGridView.AlternatingRowsDefaultCellStyle Color.Empty
DataGridView.RowsDefaultCellStyle Color.Empty
DataGridViewColumn.DefaultCellStyle Color.DarkBlue
DataGridView.DefaultCellStyle Color.Black

Bu durumda, Color.Red hücrenin satırındaki değer listedeki ilk gerçek değerdir. Bu, hücrenin ForeColorInheritedStyleözellik değeri olur.

Aşağıdaki diyagramda, farklı DataGridViewCellStyle özelliklerin değerlerini farklı yerlerden nasıl devralabileceği gösterilmektedir.

DataGridView property-value inheritance

Stil devralma özelliğinden yararlanarak, aynı bilgileri birden çok yerde belirtmek zorunda kalmadan denetimin tamamı için uygun stilleri sağlayabilirsiniz.

Üst bilgi hücreleri, açıklandığı gibi stil devralma işlemine katılsa da, denetimin ColumnHeadersDefaultCellStyle ve RowHeadersDefaultCellStyle özellikleri DataGridView tarafından döndürülen nesneler, özelliği tarafından döndürülen nesnenin özellik değerlerini geçersiz kılan ilk özellik değerlerine DefaultCellStyle sahiptir. özelliği tarafından DefaultCellStyle döndürülen nesne için özelliklerin satır ve sütun başlıklarına uygulanmasını istiyorsanız, ve RowHeadersDefaultCellStyle özellikleri tarafından ColumnHeadersDefaultCellStyle döndürülen nesnelerin karşılık gelen özelliklerini sınıf için DataGridViewCellStyle belirtilen varsayılanlara ayarlamanız gerekir.

Dekont

Görsel stiller etkinleştirilirse, satır ve sütun başlıkları (hariç TopLeftHeaderCell) geçerli tema tarafından otomatik olarak stillendirilir ve bu özellikler tarafından belirtilen tüm stiller geçersiz kılınabilir.

DataGridViewButtonColumn, DataGridViewImageColumnve DataGridViewCheckBoxColumn türleri, sütun DefaultCellStyle özelliği tarafından döndürülen nesnenin bazı değerlerini de başlatır. Daha fazla bilgi için bu türlerin başvuru belgelerine bakın.

Stilleri Dinamik Olarak Ayarlama

Belirli değerlere sahip hücrelerin stillerini özelleştirmek için olay için DataGridView.CellFormatting bir işleyici uygulayın. Bu olayın işleyicileri türünde bir bağımsız değişken DataGridViewCellFormattingEventArgs alır. Bu nesne, biçimlendirilen hücrenin değerini denetimdeki DataGridView konumuyla birlikte belirlemenize olanak sağlayan özellikler içerir. Bu nesne ayrıca, biçimlendirilmekte olan hücrenin özelliğinin InheritedStyle değerine başlatılan bir CellStyle özellik içerir. Hücre değeri ve konumuna uygun stil bilgilerini belirtmek için hücre stili özelliklerini değiştirebilirsiniz.

Dekont

RowPrePaint ve RowPostPaint olayları da olay verilerinde bir DataGridViewCellStyle nesne alır, ancak bu durumda, salt okunur amaçlar için satır InheritedStyle özelliğinin bir kopyasıdır ve bu nesnedeki değişiklikler denetimi etkilemez.

Ayrıca ve CellMouseLeave olayları gibi olaylara yanıt olarak tek tek hücrelerin stillerini dinamik olarak DataGridView.CellMouseEnter değiştirebilirsiniz. Örneğin, olayın işleyicisinde CellMouseEnter , hücre arka plan renginin geçerli değerini depolayabilir (hücrenin Style özelliği aracılığıyla alınır), ardından fare üzerine geldiğinde hücreyi vurgulayacak yeni bir renge ayarlayabilirsiniz. Olay işleyicisinde CellMouseLeave arka plan rengini özgün değere geri yükleyebilirsiniz.

Dekont

Hücrenin özelliğinde Style depolanan değerlerin Önbelleğe Alma, belirli bir stil değerinin ayarlanıp ayarlanmadığına bakılmaksızın önemlidir. Bir stil ayarını geçici olarak değiştirirseniz, bunu özgün "ayarlanmadı" durumuna geri yüklemek, hücrenin stil ayarını daha yüksek bir düzeyden devralmaya geri dönmesini sağlar. Stilin devralınıp devralınmadığına bakılmaksızın bir hücre için geçerli olan gerçek stili belirlemeniz gerekiyorsa, hücrenin InheritedStyle özelliğini kullanın.

Ayrıca bkz.