在单个DataGridView列中更改所有单元格的填充
问题描述:
我的C#应用程序中有一个DataGridView。使用设计人员,我在DGV本身上设置了AlternatingRowsDefaultCellStyle
以及DefaultCellStyle
属性。这两种样式都有一个填充值0, 0, 5, 0
。我没有为DataGridView Tasks加载项中的Edit Columns
菜单中的任何DGV列设置任何自定义样式。在单个DataGridView列中更改所有单元格的填充
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提供我发现这个问题是,对在DataGridView本身DefaultCellStyle
最后被继承的细胞,所以我不得不从DGV属性中删除填充,并将其应用除了我不想填充的列之外的所有列。
答
继jmh_gr提供的link之后,我发现问题在于DataGridView本身的DefaultCellStyle在单元格上是最后继承的。
解决方案是从DGV属性中删除填充,并将其应用于除了我不想填充的列之外的所有列。
答
下面是我们如何可以添加填充到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(...)
花一些时间与[在Windows单元格样式窗体DataGridView控制]( http://msdn.microsoft.com/en-us/library/1yef90x0.aspx),它详细介绍了样式继承。没有看到所有的代码和GUI集样式,很难确切知道样式堆栈是什么。 – 2012-02-14 19:53:20
@jmh_gr感谢您指出了这一点,我现在看到它继承了DGV DefaultCellStyle LAST的样式,因为这是我设置填充的位置,它覆盖了我在列或单元格本身上设置的0值。我相信解决的办法是将5px填充应用到需要填充的单元格,并在默认样式中留下0填充。 – drew010 2012-02-14 20:20:43
而不是将[已解决]放入标题并编辑问题,请将解决方案作为答案。几天后,您可以回来并将其标记为已接受。 – 2012-02-14 23:00:03