2012-03-21 75 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