2012-10-19 21 views
18

Próbuję zmienić wyrównanie tekstu i rozmiar czcionki obiektu DataGridView. Wszystkie kolumny są tworzone programowo w czasie wykonywania. Oto kod ..Zmiana ustawienia komórek nagłówka DataGridView i rozmiaru czcionki

private void LoadData() 
{ 
    dgvBreakDowns.ColumnCount = 5; 
    dgvBreakDowns.Columns[0].Name = "Breakdown No"; 
    dgvBreakDowns.Columns[1].Name = "Breakdown Type"; 
    dgvBreakDowns.Columns[2].Name = "Machine Type"; 
    dgvBreakDowns.Columns[3].Name = "Date"; 
    dgvBreakDowns.Columns[4].Name = "Completed"; 

    dgvBreakDowns.Columns[4].Visible = false; 

    foreach (DataGridViewHeaderCell header in dgvBreakDowns.Rows) 
    { 
     header.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; 
     header.Style.Font = new Font("Arial", 12F, FontStyle.Bold, GraphicsUnit.Pixel); 
    } 
} 

Ta metoda nazywa LoadData() w konstruktorze formularza. Kolumny są tworzone, ale zmiany ich nagłówków nie mają zastosowania. Myślę, że to z powodu usterki w mojej pętli foreach (DataGridViewHeaderCell header in dgvBreakDowns.Rows)? Nie jestem pewien. Próbowałem go zmienić na dgvBreakDowns.Columns i otrzymałem wyjątek InvalidCastException. Jak mogę wybrać komórki nagłówka, aby zastosować te zmiany?

Mam inny drobny problem. Kiedy uruchamiam program, wygląda to tak.

enter image description here

Wskazówka pierwsza komórka jest zaznaczona domyślnie dlatego wydaje Blue. Pewnie, że to nie wpływa na nic, ale wygląda trochę brzydko i niechlujnie. Jest możliwe, aby powstrzymać go od wybrania komórki w ten sposób?

+0

to dziwne, że możesz rozpakować 'DataGridViewRow' na' DataGridViewHeaderCell' w ten sposób. Myślę, że jedynym powodem, dla którego działa twój kod jest kolekcja 'Wiersze' jest pusta ... –

Odpowiedz

30

Spróbuj tego (uwaga Używam Kolumny tutaj i nie wierszach):

foreach(DataGridViewColumn col in dgvBreakDowns.Columns) 
{ 
    col.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter; 
    col.HeaderCell.Style.Font = new Font("Arial", 12F, FontStyle.Bold, GraphicsUnit.Pixel); 
} 

chodzi o odznaczenie komórkę, spróbuj dgvBreakDowns.ClearSelection()

+1

To działa świetnie! Dzięki lc. :) – Isuru

+0

Dziękuję bardzo, ale potrzebuję dla DataGrid i zmieniłem twój kod na [This] (https://pastebin.com/GPSaAK4m), Ten kod dla zmiany do nagłówka Colournd DataGrid. Mam nadzieję, że pomaga innym ... – tpbafk

3

lub po prostu spróbować tego:

dgvBreakDowns.Columns[4].HeaderCell.Style.Alignment = DataGridViewContentAlignment.BottomCenter; 
Powiązane problemy