DataGridView合并相同单元格(同列相邻单元格)..doc

DataGridView合并相同单元格(同列相邻单元格)..doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DataGridView合并相同单元格(同列相邻单元格).

//运行界面: 思路: 1,首先用 FillRectangle方法填充将要合并的列 filter_Cols. 2.在filter_Cols列,大于 -1 行,小于最后一行中,当前单元格和下一单元格不同值时画右线和底线. 3.在filter_Cols列的最后一行单元格中添加底线. 4.除了 0 行外,如果当前单元格 非空值 和上一单元格值相同则不做处理,如果不同则绘制值. //注意的是 1 ,当设置DataGridView的 AllowUserToAddRows 属性为true时,会发现最后一行多出两个无数据的行.其实不是通过该代码多画出来,而是 AllowUserToAddRows 属性设置为 true. 2 ,当在填充后画右线或底线时,线的位置不能和之前的重合,否则使得前一操作画的线被冲掉. 3 ,当数据库中的值为空时,在CellPainting方法中,e.Value 为 ,e.Value.ToString 为 . 4 ,这里是对每个CellBounds 进行重绘,而非ClipBounds. //将同一行相邻且值相同的单元格合并. private void dataGV_CellPainting object sender, DataGridViewCellPaintingEventArgs e if e.RowIndex ! -1 e.ColumnIndex 1 SolidBrush gridPen new SolidBrush dataGV.GridColor ; ?//网格颜色. SolidBrush groupPen new SolidBrush e.CellStyle.BackColor ; ? //合并单元格的填充色 注意这里不是DataGridView的BackGroundColor . using Pen p new Pen gridPen //用Pen画线. e.Graphics.FillRectangle groupPen, e.CellBounds ; if e.RowIndex dataGV.Rows.Count - 1 dataGV.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value ! null dataGV.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value.ToString ! e.Value.ToString //单元格值不同时不合并 即加底线 . e.Graphics.DrawLine p, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right, e.CellBounds.Bottom - 1 ;//这里的减1操作是为了不使继续下一个操作时冲掉之前的网格. e.Graphics.DrawLine p, e.CellBounds.Right - 1, e.CellBounds.Top, e.CellBounds.Right - 1, e.CellBounds.Bottom ; ?//画右线. else e.Graphics.DrawLine p, e.CellBounds.Right - 1, e.CellBounds.Top, e.CellBounds.Right - 1, e.CellBounds.Bottom ; ?//画右线. if e.RowIndex dataGV.Rows.Count - 1 //最后一个单元格. e.Graphics.DrawLine p, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right, e.CellBounds.Bottom - 1 ; ? ?//画底线. if e.Value ! null if ! e.RowIndex 0 dataGV.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString e.Value.ToString //相同值的相邻单元格. e.Graphics.DrawString e.Value.ToString , e.CellStyle.Font, Brushes.Black, e.CellBounds.X, e.CellBounds.Y, StringFormat.GenericDefault ; e.Handled true;

文档评论(0)

sh4125733 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档