2012-03-21 154 views
5

我有一個DataGridView,我在C#Winforms項目中使用。網格不會自動生成列。我已經手動設置了列名和屬性。DataGridView單元格對齊不起作用

這包括單元的DefaultCellStyle。我希望所有類型爲DataGridViewCheckBoxColumn的單元格都居中對齊。我在設計器中爲這種類型的每一列手動設置了這種對齊方式。 datagridview加載時不會顯示這些更改。

作爲我的下一個方法中,我使用下面在DataBindingComplete事件中的代碼(其也沒有效果)

foreach (DataGridViewColumn dgvc in this.dgv_Automations.Columns) 
{ 
    if(dgvc.CellType == typeof(DataGridViewCheckBoxCell)) 
     dgvc.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; 
} 

當調試,上面的代碼已經有對準設置的中心。但是,它仍然沒有顯示在網格上。

CAN得到它DataBindingComplete事件過程中工作,如果我做這樣的事情:

foreach (DataGridViewRow dgvr in this.dgv_Automations.Rows) 
{ 
    dgvr.Cells["isErrors"].Style.Alignment = DataGridViewContentAlignment.MiddleCenter; 
} 

不過,我有很多這樣的列,並且它確實沒有意義的,做這種方式。編輯:我已經實現了這種方式,只有約10行有非常明顯的滯後從每個單元格上設置此屬性。

我的問題是:這樣做的正確方法是什麼?爲什麼設計器的DefaultCellStyle不起作用?

+0

請不要用「C#」等來標題。這就是標籤的用途。 – 2012-03-21 19:50:29

+0

已注意。將來不會。 – ImGreg 2012-03-21 19:53:34

回答

7

根據MSDN一個DataGridViewColumnDefaultCellStyle通過經由DataGridView.RowsDefaultCellStyleDataGridView.AlternatingRowsDefaultCellStyleDataGridViewRow.DefaultCellStyleDataGridViewCell.Style屬性中指定的樣式覆蓋。
所以這是不可能性的是,這些樣式之一被設置爲DefaultCellStyling您需要對齊不兼容的值(例如DataGridViewContentAlignment.NotSetDataGridViewContentAlignment.TopLeft