winforms DataGridView单元格对齐不起作用

r7s23pms  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(124)

我有一个DataGridView,我在C# Winforms项目中使用。网格不会自动生成列。我已经手动设置了列名和属性。
这包括单元格的DefaultCellStyle。我希望DataGridViewCheckBoxColumn类型的所有单元格居中对齐。我已经在设计器中为这种类型的每个列手动设置了这种对齐方式。这些更改在加载datagridview时不显示。
作为我的下一个方法,我在DataBindingComplete事件中使用了下面的代码(也没有效果)

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

在调试时,上面的代码已经将对齐设置为中心。但是,它仍然没有出现在网格上。
如果在DataBindingComplete事件期间我做了这样的事情,我可以让它工作:

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

然而,我有很多这样的专栏,这样做真的没有意义。编辑:我已经实现了这种方式,只有大约10行有非常明显的滞后设置这个属性的每个单元格。
我的问题是:怎样做才是正确的呢?为什么设计器DefaultCellStyle不起作用?

r3i60tvu

r3i60tvu1#

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

lrpiutwd

lrpiutwd2#

关于DefaultCellStyling和继承如何工作的一个更有用的链接。
http://msdn.microsoft.com/en-us/library/1yef90x0.aspx
原来我设置了一个DefaultRowStyle,它覆盖了DefaultCellStyle。确保你检查所有的风格!!

9cbw7uwe

9cbw7uwe3#

WWITH .Net 4.8 ->如果你想对齐将“控制”在列的基础上与DefaultCellStyle.对齐每列,编辑您的表单x.Designer.cs文件和注解您的对齐设置的CellStyle的网格行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; this.Grid.RowsDefaultCellStyle = dgv_CellStyle2;

相关问题