2017-04-27 53 views
0

我一個DataGridView綁定到對象的列表(報告)VB.NET格式排字體,DataGridViewer

DataGridView2.DataSource = Report 

而且因爲我這樣做,所有的行文本格式是相同的。

有什麼辦法可以格式化表中的某一行?例如,我希望將行1的文本以粗體顯示,其餘行默認爲正常。

非常感謝

+0

幽州_「舉個例子,我想有粗體,其餘第1行的文字的行是正常的「_...理論上的可見行1可能是許多行中的一行。例如,頂部可見行(第1行?)將其字體設置爲粗體,然後用戶向下滾動,使頂部行向上滾動出網格的可見部分。你想只有第一個可見的行保持大膽?我沒有嚴格遵循什麼條件,哪一行應該是大膽的。 – JohnG

回答

0

您可以使用DataGridView.CellFormatting事件和轉變作風的每一個細胞,如果行索引爲0

Private Sub YourDataGridView_CellFormatting(sender AS Object, 
              e As DataGridViewCellFormattingEventArgs) 
    If e.RowIndex <> 0 Then Exit Sub 

    ' Use e.CellStyle for formatting a cell 
    e.CellStyle.BackColor = Color.Grey; 
    e.CellStyle.Font = yourFontForFirstRow 
End Sub 

注意DataGridView.CellFormatting每次事件發生時控制繪畫,所以你需要謹慎並且不要在那種情況下執行「沉重的」邏輯。 DataGridView.CellFormatting Event

+0

我試過了你的方法,但它不工作,單元格樣式沒有任何改變。 –

+0

@ N.T.C - 你是否通過在構造函數中使用'AddHandler yourDataGridView.CellFormatting,AddressOf YourDataGridView_CellFormatting'或通過在方法聲明中添加'處理yourDataGridView.CellFormatting'來訂閱事件? – Fabio

1

就像列一樣,DataGridView中的行有DefaultCellStyle。那DataGridViewCellStyle有一個Font財產,你可以設置爲Font與適當的Style設置,例如。

Dim cellStyle = myDataGridViewRow.DefaultCellStyle 
Dim font = cellStyle.Font 

cellStyle.Font = New Font(font, font.Style Or FontStyle.Bold) 

編輯:我已經意識到,如果你還沒有明確設置Font該行的代碼將失敗。如果每個單元從電網繼承了它的風格,那麼你需要從電網的字體太:

Dim font = myDataGridView.DefaultCellStyle.Font 

myDataGridViewRow.DefaultCellStyle.Font = New Font(font, font.Style Or FontStyle.Bold) 
+0

該解決方案將更改表格中所有單元格的字體,而不僅僅是一行。 –

+0

除外。 – jmcilhinney

+0

@NTC ti會,但首先你需要從datagriview獲得第一行:'myDataGridViewRow = yourDataGridView.Rows(0)',因爲DataGridView可能沒有任何行,所以你需要首先檢查是否有任何行訪問第一行的索引 – Fabio