数据网格视图单元格对齐不起作用



我在C#Winforms项目中使用了一个DataGridView。网格不会自动生成列。我已经手动设置了列名和属性。

这包括单元格的DefaultCellStyle。我希望所有DataGridViewCheckBoxColumn类型的单元格居中对齐。我已经在设计器中为这种类型的每一列手动设置了这种对齐方式。加载数据网格视图时,这些更改不会显示。

作为我的下一个方法,我在DataBindingComplete事件中使用了下面的代码(也没有效果)

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

调试时,上面的代码已经将对齐设置为中心。然而,它仍然没有显示在网格上。

如果在DataBindingComplete事件期间我执行以下操作,则我CAN可以使其工作:

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

然而,我有很多这样的专栏,这样做真的没有意义。编辑:我已经用这种方式实现了它,只有大约10行,在每个单元格上设置这个属性有非常明显的滞后。

我的问题是:做这件事的正确方法是什么?为什么设计器DefaultCellStyle不起作用?

根据MSDN,DataGridViewColumnDefaultCellStyle由通过DataGridView.RowsDefaultCellStyleDataGridView.AlternatingRowsDefaultCellStyleDataGridViewRow.DefaultCellStyleDataGridViewCell.Style属性指定的样式覆盖
因此,其中一种样式可能被设置为与所需对齐不兼容的值(例如DataGridViewContentAlignment.NotSetDataGridViewContentAlignment.TopLeft

DefaultCellStyling和继承如何工作的更有用的链接。

http://msdn.microsoft.com/en-us/library/1yef90x0.aspx

结果我设置了一个DefaultRowStyle,它覆盖了DefaultCellStyle。确保检查所有样式!!

WWITH.Net 4.8->如果您希望Alignment将是";受控的";以列为基础DefaultCellStyle.Assignment对于每列,编辑表单x.Designer.cs文件并注释网格行的CellStyle的Alignment设置DefaultCellStyle(我的)x.Designer.cs文件的摘录->//dgv_CellStyle2.Alignment=System.Windows.Forms.DataGridViewContentAlignment.MiddleRight;dgv_CellStyle2.WrapMode=System.Windows.Forms.DataGridViewTriState.True;dgv_CellStyle2.BackColor=System.Drawing.Color.LightGreen;这Grid.RowsDefaultCellStyle=dgv_CellStyle2;

相关内容

  • 没有找到相关文章