C#datagridview 合并数据相同的行

这篇博客介绍了在C#中如何合并DataGridView中数据相同行的方法,同时还涵盖了Markdown的使用技巧,包括插入链接、图片、代码片、列表、表格、居中对齐、SmartyPants转换、注脚、数学公式、甘特图、UML图表和Flowchart流程图的创建和导入导出功能。
摘要由CSDN通过智能技术生成

c#中C#datagridview 合并数据相同的行

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
        {
      
            //e.ColumnIndex == 1 || e.ColumnIndex == 2 || e.ColumnIndex == 3(最后一列不绘制)      
            if (e.RowIndex >= 0 && (e.ColumnIndex == 1 || e.ColumnIndex == 2 || e.ColumnIndex == 3 ) && e.Value.ToString() != string.Empty)
            {
                   
                #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;//总行数               
                using (Brush gridBrush = new SolidBrush(this.dataGridView1.GridColor), backColorBrush = new SolidBrush(e.CellStyle.BackColor))
                {
   
                    using (Pen gridLinePen = new Pen(gridBrush))
                    {
   
                        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);                           
                            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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值