2010-12-29 25 views
11

Mam dziwny problem i prawdopodobnie jest to prosta poprawka, ale po wielu badaniach nie mogę znaleźć rozwiązania.Jak wycentrować nagłówek w kolumnie w DataGridView?

Mam DataGridView, na którym próbuję wyśrodkować nagłówki kolumn, ale wynikiem jest lewe odchylenie w centrowaniu - prawie jak wcięcie problemu. Widziałem kilka postów na ten temat na stronie lub w dwóch, ale nigdy nie było rozwiązania. jakieś pomysły?

Oto zestawienie Obecnie próbuję użyć:

DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 

Odpowiedz

21

Kod pan pisał jest na właściwej drodze: trzeba ustawić właściwość kontrolą DataGridViewColumnHeadersDefaultCellStyle.

Jednak trzeba utworzyć nową klasę DataGridViewCellStyle i przypisać że do nieruchomości ColumnHeadersDefaultCellStyle. Nie można zmodyfikować właściwości Alignment jako przykładu kodu, chyba że przypisano klasę DataGridViewCellStyle do tej właściwości.

Tak więc, na przykład, następujący kod osiąga doskonale skupione Nagłówki kolumn w pustym projekcie:

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

myDataGridView.ColumnHeadersDefaultCellStyle = dgvColumnHeaderStyle 

  DataGridView with centered column headings


W przyszłości może się okazać, że łatwiej zrobić te typy rzeczy od projektanta. Jeśli nadal musisz to zrobić samodzielnie, za pomocą kodu, możesz sprawdzić utworzony plik *.Designer.vb, aby zobaczyć, jak to się stało.


EDIT: Właśnie teraz zauważyłem nieznaczne przesunięcie masz na myśli w kolumnach, to rzeczywiście stworzyć Lekko zaokrąglona do prawa każdego nagłówka. To nie jest błąd. Jest o wiele prostsze wytłumaczenie.

Podobnie jak ListView, DataGridView obsługuje sortowanie według kolumn. Dlatego każdy nagłówek kolumny rezerwuje wystarczającą ilość miejsca, aby wyświetlić glif sortowania (zwykle strzałkę) podczas obliczania centralnego uzasadnienia.

Jeśli chcesz, aby nagłówki kolumn miały być , idealnie wyśrodkowane, musisz wyłączyć sortowanie. Ustawia właściwość SortMode dla kolumny na "Niezbędne". Powinno to zapobiec zarezerwowaniu miejsca dla symbolu sortowania, gdy tekst kolumny jest wyrównany do środka lub do prawej.

+2

Dziękuję za szybką odpowiedź. Zauważam jednak, że masz takie samo odchylenie w lewo - każda z nagłówków nie jest w centrum. Czytam niektóre informacje, które wydają się wskazywać na błąd, który wymaga, aby każdy nagłówek był wypełniony kilkoma pustymi miejscami, ale wyraźnie zmienia się w zależności od długości nagłówka kolumny. Wygląda na to, że przed tekstem pojawi się dopełnienie o około 2,5%. Oczywiście, nie brzmi to jak rozwiązanie. Próbowałem tego na kilka sposobów i ciągle robię to samo. Dziwne, co? – Keith

+0

BTW, the 2.5% to całkowita szerokość kolumny ... przepraszam za wszelkie pomyłki wynikające z pominięcia. – Keith

+0

@Keith: Właśnie zauważyłem, o czym mówisz. To zabawne, nigdy wcześniej nie zwracałem na to uwagi. I wszyscy moi przyjaciele nazywają mnie OCD - pokażą im! Zaktualizowałem swoją odpowiedź, wprowadzając nowy wgląd. –

1

Jeśli chcesz centrum lub innej styl wyrównania tekstu nagłówka kolumny można użyć tego

dgvResults.Columns("ColumnName").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 
Powiązane problemy