2010-12-29 18 views
11

Garip bir problemim var ve muhtemelen basit bir çözüm, ama çok fazla araştırmadan sonra bir çözüm bulamıyorum.Başlığı DataGridView'daki bir sütunda nasıl merkezleyebilirim?

Üzerinde sütun başlıkları ortalamayı denediğim bir DataGridView var, ancak sonuç ortadaki bir sol yanlılıktır - neredeyse girinti sorunu gibi. Bu konuda bir ya da iki sitede birkaç yazı gördüm, ama asla bir çözüm. Düşüncesi olan var mı?

Burada şu anda kullanmaya çalışıyorum ifadedir:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 

cevap

21

Yayınladığınız kod doğru yolda: Eğer DataGridView denetimin ColumnHeadersDefaultCellStyle özelliğini ayarlamanız gerekir.

Ancak, yeni DataGridViewCellStyle sınıf oluşturmak ve ColumnHeadersDefaultCellStyle özelliğine o atamanız gerekir. Bu özelliğe bir DataGridViewCellStyle sınıfı atamış olmadığınız sürece, örnek kodunuzun gösterdiği gibi Alignment özelliğini değiştiremezsiniz.

boş projede

Yani, örneğin, aşağıdaki kod mükemmel merkezli faydayı sağladığı sütun başlıkları :

Dim dgvColumnHeaderStyle As New DataGridViewCellStyle() 
dgvColumnHeaderStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 

myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle 

  Gelecekte DataGridView with centered column headings


, daha kolay bu tür yapmak bulabilirsiniz Tasarımcıdan şeylerin. Hala kod aracılığıyla kendiniz yapmanız gerekiyorsa, nasıl yapıldığını görmek için oluşturulan *.Designer.vb dosyasını kontrol edebilirsiniz.


DÜZENLEME: Şimdi sadece hafif sen sütunların-gerçekten her başlığının sağındaki küçük bir ekstra doldurma oluşturmak gelmez bahsettiğiniz ofset ettim. Yine de bir böcek değil. Daha basit bir açıklama var.

ListView gibi, DataGridView sütunlara göre sıralamayı destekler. Bu nedenle, her sütun başlığı, merkezi doğrulamayı hesaplarken sıralama glifini (genellikle bir ok) görüntülemek için yeterli alan ayırır.

Sütun üstbilgilerinin mükemmel şekilde ortalamasını istiyorsanız, sıralamayı devre dışı bırakmanız gerekir. Sütunun SortMode özelliğini "NonSortable" olarak ayarlayın. Bu, sütun metni merkezde veya sağda haklı olduğunda boşlukların glif için ayrılmasını engeller. Eğer ortalamak veya Sütun Başlığı metin başka hizalama stilini kullanmak istiyorsanız

+2

hızlı yanıt için teşekkür ederiz kullanabilirsiniz. Yine de fark ettiğim şey, aynı sol önyargıyı almanızdır - her başlık tam ortalanmıyor. Bir hatayı belirtmek için görünen bazı bilgileri okuyorum, her başlık biraz boş alanlarla doldurulmasını gerektirir, ancak açıkça sütun başlığının uzunluğuna göre değişir. Metinden önce eklenecek yaklaşık% 2.5'lik bir dolgu gibi görünüyor. Açıkçası, bu bir çözüm gibi gelmiyor. Bunu birkaç yolla denedim ve aynı şeyi almaya devam ettim. Garip, ha? – Keith

+0

BTW, 2.% 5 sütunun toplam genişliğindedir ... ihmalden kaynaklanan karışıklık için üzgünüm. – Keith

+0

@Keith: Şimdi ne hakkında konuştuğunuzu fark ettim. Bu komik, daha önce hiç dikkat etmedim. Ve tüm arkadaşlarım bana OCD diyor - onlara gösterecek! Cevabımı yeni bir anlayışla güncelledim. –

1

bu

dgvResults.Columns("ColumnName").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 
İlgili konular