Windows Forms DataGridView Denetimindeki Hücre Stilleri

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

Stillerin paylaş olduğu hücre grupları, belirli satırlar veya sütunlar içindeki tüm hücreleri, belirli değerleri içeren tüm hücreleri veya denetimde bulunan tüm hücreleri içerebilir. Bu gruplar çakışarak her hücrenin stil bilgilerini birden fazla yerde edinebilirsiniz. Örneğin, bir denetimde yer alan her hücrenin aynı yazı tipini, ancak yalnızca para birimi sütunlarında yer alan hücrelerin para birimi biçimini ve negatif sayılara sahip para birimi hücrelerinin kırmızı ön plan rengini DataGridView kullanmalarını sekleyebilirsiniz.

DataGridViewCellStyle Sınıfı

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

Bu sınıf ayrıca 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 Ayrıca Bkz. DataGridViewCellStyle bölümünde listelenen başvuru belgelerine ve konulara bakın.

DataGridViewCellStyle Nesnelerini Kullanma

, DataGridViewCellStyle , ve sınıflarının çeşitli özelliklerinden DataGridView ve bunların türetilmiş DataGridViewColumnDataGridViewRowDataGridViewCell sınıflarından nesneleri alın. Bu özelliklerden biri henüz ayarlanmadı ise, değerini almak yeni bir nesne DataGridViewCellStyle oluşturur. Ayrıca kendi nesnelerinizin örneğini ve DataGridViewCellStyle bunları bu özelliklere atabilirsiniz.

Nesneleri birden çok öğe arasında paylaşarak stil bilgisinin gereksiz DataGridViewCellStyle çoğaltılmasından DataGridView kaçınabilirsiniz. Denetim, sütun ve satır düzeylerinde ayarlanmış stiller her düzeyden hücre düzeyine kadar filtreleyene kadar, yalnızca yukarıdaki düzeylerden farklı olan her düzeydeki stil özelliklerini ayarerek 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 ayar eden birincil özellikler DataGridViewCellStyle liste bulunmaktadır.

Özellik Sınıflar Açıklama
DefaultCellStyle DataGridView, DataGridViewColumn , ve türetilmiş DataGridViewRow sınıflar Denetimin tamamına (üst bilgi hücreleri dahil), bir sütundaki veya bir satırdaki tüm hücreler tarafından kullanılan varsayılan stilleri alır veya ayarlar.
RowsDefaultCellStyle DataGridView Denetimde 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 Denetimde alternatif satırlar tarafından kullanılan varsayılan hücre stillerini alır veya ayarlar. Muhasebeye benzer bir etki 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 stilleri etkinse geçerli tema tarafından geçersiz kılınır.
ColumnHeadersDefaultCellStyle DataGridView Denetimin sütun üst bilgileri tarafından kullanılan varsayılan hücre stillerini alır veya ayarlar. Görsel stilleri etkinse geçerli tema tarafından geçersiz kılınır.
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 , ve türetilmiş DataGridViewColumn sınıflar Daha yüksek düzeylerden devralınan stiller 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 ayarlanmazsa otomatik DataGridViewCellStyle olarak yeni bir nesne örneği oluşturur. Bu nesneleri gereksiz yere oluşturmaktan kaçınmak için, satır ve sütun sınıflarında özelliğin ayar olup olmadığını belirlemek için kontrol etmek üzere HasDefaultCellStyle kontrol etmek üzere bir özelliği DefaultCellStyle vardır. Benzer şekilde, hücre sınıflarında HasStyle özelliğin ayar olup olmadığını Style belirten bir özelliği vardır.

Stil özelliklerinin her biri denetimde karşılık gelen bir PropertyNameDataGridView olayına sahiptir. Satır, sütun ve hücre özellikleri için olayın adı " ", " " veya " " ile başlar RowColumnCell (örneğin, RowDefaultCellStyleChanged ). Bu olayların her biri, karşılık gelen stil özelliği farklı bir nesneye ayarlanırsa DataGridViewCellStyle gerçekleşir. Bu olaylar, bir stil özelliğinden DataGridViewCellStyle bir nesne almak ve özellik değerlerini değiştirmek olduğunda oluşmaz. Hücre stili nesnelerinde yapılan değişikliklere yanıt vermek için olayı CellStyleContentChanged işin.

Stil Devralımı

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

  1. DataGridViewCell.Style

  2. DataGridViewRow.DefaultCellStyle

  3. DataGridView.AlternatingRowsDefaultCellStyle (yalnızca tek dizin numaraları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 özelliği, aşağıdaki kaynak özellikler listesinden verilen InheritedStyle sırayla değerlere göre doldurulur.

  1. DataGridViewCell.Style

  2. DataGridView.ColumnHeadersDefaultCellStyle veya DataGridView.RowHeadersDefaultCellStyle

  3. DataGridView.DefaultCellStyle

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

Properties of type DataGridViewCellStyle

Ayrıca 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ıyor.

  1. DataGridViewColumn.DefaultCellStyle

  2. DataGridView.DefaultCellStyle

row InheritedStyle özelliği, değerlerini aşağıdaki özelliklerden devralıyor.

  1. DataGridViewRow.DefaultCellStyle

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

  3. DataGridView.RowsDefaultCellStyle

  4. DataGridView.DefaultCellStyle

Bir özellik tarafından döndürülen bir nesnede yer alan her özellik için özellik değeri, karşılık gelen özelliği sınıf varsayılanları dışında bir değere ayarlanmış uygun listede ilk hücre DataGridViewCellStyleInheritedStyleDataGridViewCellStyle stilinden elde edilir.

Aşağıdaki tabloda örnek hücrenin ForeColor özellik değerinin, içeren sütunundan nasıl devralınmış olduğu göstermektedir.

Türün özelliği DataGridViewCellStyle Alınan ForeColor nesne için örnek 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ına gelen değer, listenin ilk gerçek değeridir. Bu, ForeColor hücrenin özellik değeri InheritedStyle olur.

Aşağıdaki diyagramda, farklı özelliklerin değerlerini DataGridViewCellStyle farklı yerlerden nasıl devralacakları göstermektedir.

DataGridView property-value inheritance

Stil devralmadan yararlanarak, aynı bilgileri birden çok yerde belirtmek zorunda kalmadan denetimin tamamı için uygun stilleri sebilirsiniz.

Üst bilgi hücreleri açıklandığı gibi stil devralmaya katılsa da, denetimin ve özellikleri tarafından döndürülen nesneler, özelliği tarafından döndürülen nesnenin özellik değerlerini geçersiz kılmak için ColumnHeadersDefaultCellStyleRowHeadersDefaultCellStyle ilk özellik DataGridView değerlerine DefaultCellStyle sahiptir. özelliği tarafından döndürülen nesnenin özelliklerinin satır ve sütun üst bilgilerine uygulanacak şekilde ayarlanmış olması için, ve özellikleri tarafından döndürülen nesnelerin karşılık gelen özelliklerini sınıfı için belirtilen varsayılanlara DefaultCellStyleColumnHeadersDefaultCellStyleRowHeadersDefaultCellStyleDataGridViewCellStyle ayarlayabilirsiniz.

Not

Görsel stilleri etkinleştirilirse, satır ve sütun üst bilgileri (hariç) geçerli tema tarafından otomatik olarak stillenir ve bu özellikler tarafından belirtilen stilleri TopLeftHeaderCell geçersiz kılınır.

DataGridViewButtonColumn, DataGridViewImageColumn ve DataGridViewCheckBoxColumn türleri, column özelliği tarafından döndürülen nesnenin bazı değerlerini de DefaultCellStyle başlatmaktadır. Daha fazla bilgi için bu türlere ilişkin başvuru belgelerine bakın.

Stilleri Dinamik Olarak Ayarlama

Belirli değerlere sahip hücrelerin stillerini özelleştirmek için, olay için bir işleyici DataGridView.CellFormatting uygulama. Bu olay için işleyiciler türünde bir bağımsız değişken DataGridViewCellFormattingEventArgs alır. Bu nesne, biçimlendirilmiş hücrenin değerini denetimde bulunduğu konumla birlikte belirlemenize izin eden özellikler DataGridView içerir. Bu nesne ayrıca CellStyle biçimlendirilen hücrenin özelliğinin değerine InheritedStyle başlatılan bir özelliği içerir. Hücre değerine ve konuma uygun stil bilgilerini belirtmek için hücre stili özelliklerini değiştirebilirsiniz.

Not

ve olayları da olay verilerinde bir nesnesi alır, ancak kendi durumlarında salt okunur amacıyla satır özelliğinin bir kopyasıdır ve üzerinde yapılan değişiklikler RowPrePaintRowPostPaint denetimi DataGridViewCellStyleInheritedStyle etkilemez.

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

Not

Önbelleğe Alma stil değerinin ayarlanmış olup olmadığı ne olursa olsun hücrenin özelliğinde depolanan değerler Style önemlidir. Bir stil ayarını geçici olarak değiştirirseniz, özgün "ayarlanmaz" 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ınmamalarına bakılmaksızın bir hücre için geçerli olan gerçek stili belirlemeniz gerekirse hücrenin özelliğini InheritedStyle kullanın.

Ayrıca bkz.