更改单个DataGridView列中所有单元格的填充

时间:2012-02-14 19:47:09

标签: c# winforms datagridview

我的C#应用​​程序中有一个DataGridView。使用设计器,我在DGV本身设置了AlternatingRowsDefaultCellStyle以及DefaultCellStyle属性。这两种样式的填充值均为0, 0, 5, 0。我没有为DataGridView Tasks加载项中的Edit Columns菜单中的任何DGV列设置任何自定义样式。

DGV中有一列是一个图像列,我为每一行绘制一个小图。我想从此列中的所有单元格中删除填充,因此没有填充应用于单元格,在图形的末尾留下一些空格。

我尝试过以下每一项操作都不会从列中的任何单元格中删除填充,但也不会抛出任何异常。

// first attempt
// taken from http://social.msdn.microsoft.com/Forums/eu/winforms/thread/a9227253-8bb4-429a-a700-8a3a255afe4d
deviceGrid.Columns["GProduction"].DefaultCellStyle.Padding = new Padding(0);

// second attempt
DataGridViewCellStyle style = deviceGrid.Columns["Graph"].DefaultCellStyle; // also tried Clone()
style.Padding = new Padding(0);
deviceGrid.Columns["GProduction"].DefaultCellStyle = style;

// third attempt
DataGridViewColumn col = deviceGrid.Columns["Graph"];
DataGridViewImageCell icell = new DataGridViewImageCell();
icell.Style.Padding = new Padding(0);
col.CellTemplate = icell;

我怀疑DataGridView本身的DefaultCellStyle填充可能会覆盖我尝试为列设置的默认单元格样式,但如果是这种情况,我需要做些什么来防止这种情况?

SOLUTION:
在遵循jmh_gr提供的link之后,我发现问题是DataGridView本身的DefaultCellStyle在单元格上最后继承,所以我不得不从DGV属性中删除填充,并将其应用于所有除了我不想要填充的列之外的列。

2 个答案:

答案 0 :(得分:3)

在关注jmh_gr提供的link之后,我发现问题是DataGridView本身的DefaultCellStyle在单元格上最后继承。

解决方案是从DGV属性中删除填充,并将其应用于除了我不想填充的列之外的所有列。

答案 1 :(得分:0)

以下是我们如何在DataGridView标题单元格中添加填充

        dgv.Columns["col1"].HeaderCell.Style.Padding = new Padding(0, 5, 0, 0)
        dgv.Columns["col2"].HeaderCell.Style.Padding = new Padding(0, 5, 0, 0)

此代码必须在构造函数或OnLoad(...)

中添加