2014-02-12 75 views
0

在我的Form Load事件中,我有一個添加到BindingSource的對象列表。代碼的最後一行我在加載事件稱之爲是:如何在WinForms中有條件地更改datagridview的單元格格式?

dataGridView1.DataSource = bindingSource; 

我試圖改變細胞使用dataGridView1_CellPainting事件以及一個dataGridView1_CellFormatting事件格式化。這兩個事件都不會被調用。

感謝

+0

你想用它做什麼? – DonBoitnott

+0

對不起。更改背景顏色。 –

+0

可能的重複:http://stackoverflow.com/questions/6041044/how-to-paint-only-datagridviews-cell-background-not-its-content – DonBoitnott

回答

2

爲了從您必須訂閱它電網接收CellPainting事件。這可以在表單設計器或代碼中完成。有關更多信息,請參閱this link

2

值得注意的是,您可以通過使用DefaultCellStyle屬性來處理更改顏色和其他單元格樣式功能。這可以應用於網格級別,行級別,列級別,一直到單個單元級別。這裏是一個不錯的圖像顯示的造型是怎樣遺傳的:

CellStyle inheritance

如果可能的話,最好在層次的最高水平的應用樣式,讓它繼承到細胞。這與您希望避免使用CellPaintingCellFormatting事件爲單元格着色的原因相同;您正在處理每個單元格的事件,並且可以更高效地完成該事件。您可能不會注意到它適用於小數據集或簡單網格,但如果需要縮放,它會減慢速度。在需要應用自定義格式或單元格繪製方式時使用這些事件,但爲了着色,您可以更高效。有關更多信息,請參見Best Practices Cell Styling

從給出的信息看來,您嘗試將單元格顏色應用於自動生成的網格後數據綁定列。我的建議是使用上述技巧在DataBindingComplete事件中設置DataGrid的樣式。您可以使用最新的綁定數據在那裏應用您的條件樣式,並避免在CellPainting中進行過度處理。

相關問題