博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#datagridview 合并数据相同的行
阅读量:5135 次
发布时间:2019-06-13

本文共 4426 字,大约阅读时间需要 14 分钟。

  private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)        {            if (e.RowIndex >= 0 && e.ColumnIndex >= 0 && e.Value.ToString() != string.Empty)            {                //if (!string.IsNullOrEmpty(this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()) && this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value != null)                //{
#region int UpRows = 0;//上面相同的行数 int DownRows = 0;//下面相同的行数 int count = 0;//总行数 int cellwidth = e.CellBounds.Width;//列宽 //获取下面的行数 for (int i = e.RowIndex; i < this.dataGridView1.Rows.Count; i++) { if (this.dataGridView1.Rows[i].Cells[e.ColumnIndex].Value.ToString().Equals(e.Value.ToString())) { DownRows++; } else { break; } } //获取上面的行数 for (int i = e.RowIndex; i >= 0; i--) { if (this.dataGridView1.Rows[i].Cells[e.ColumnIndex].Value.ToString().Equals(e.Value.ToString())) { UpRows++; } else { break; } } count = UpRows + DownRows - 1;//总行数 //if (count < 2) //{ return; } using (Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor), backColorBrush = new SolidBrush(e.CellStyle.BackColor)) { using (Pen gridLinePen = new Pen(gridBrush)) { //this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = this.dataGridView1.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value; //this.dataGridView1.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value = DBNull.Value; //清除单元格 e.Graphics.FillRectangle(backColorBrush, e.CellBounds); if (e.Value != null) { int cellheight = e.CellBounds.Height; SizeF size = e.Graphics.MeasureString(e.Value.ToString(), e.CellStyle.Font); //if (e.RowIndex > 0 && this.dataGridView1.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString() == e.Value.ToString()) //{ //} //else //{
e.Graphics.DrawString((e.Value).ToString(), e.CellStyle.Font, Brushes.Black, e.CellBounds.X + (cellwidth - size.Width) / 2, e.CellBounds.Y - cellheight * (UpRows - 1) + (cellheight * count - size.Height) / 2, StringFormat.GenericDefault); //} } //如果下一行数据不等于当前行数据,则画当前单元格底边线 if (e.RowIndex < this.dataGridView1.Rows.Count - 1 && this.dataGridView1.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value.ToString() != e.Value.ToString()) { e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1); } if (e.RowIndex == this.dataGridView1.Rows.Count - 1) { e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left + 2, e.CellBounds.Bottom - 1, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1); count = 0; } //画grid右边线 //e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Bottom - 1, e.CellBounds.Right - 1, e.CellBounds.Bottom - 1); e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1, e.CellBounds.Top, e.CellBounds.Right - 1, e.CellBounds.Bottom); e.Handled = true; } } #endregion //} } }

最近整理自己写过的代码,发现datagridview行合并代码,已忘记是摘抄的网上的资料还是自己写的了,故此处无法写明参考自何处,如有哪位网友发现来源,麻烦请告知。在下还是很支持正版的。(整理进自己的博客里,方便查看阅读。O(∩_∩)O~~)

转载于:https://www.cnblogs.com/wyynts/p/6514977.html

你可能感兴趣的文章
Zookeeper选举算法原理
查看>>
3月29日AM
查看>>
利用IP地址查询接口来查询IP归属地
查看>>
HTML元素定义 ID,Class,Style的优先级
查看>>
构造者模式
查看>>
http和https的区别
查看>>
Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法...
查看>>
找到树中指定id的所有父节点
查看>>
今天新开通了博客
查看>>
AS3优化性能笔记二
查看>>
ElasticSearch(站内搜索)
查看>>
4----COM:a Generative Model for group recommendation(组推荐的一种生成模型)
查看>>
UVA 11137 - Ingenuous Cubrency
查看>>
js阻止事件冒泡的两种方法
查看>>
Java异常抛出
查看>>
74HC164应用
查看>>
变量声明和定义的关系
查看>>
Wpf 之Canvas介绍
查看>>
linux history
查看>>
jQuery on(),live(),trigger()
查看>>