datagridview合并单元格,行合并 您所在的位置:网站首页 datagrid合并相同行值 datagridview合并单元格,行合并

datagridview合并单元格,行合并

2023-04-19 00:06| 来源: 网络整理| 查看: 265

Windows Forms DataGridView 没有提供合并单元格的功能,要实现合并单元格的功能就要在CellPainting事件中使用Graphics.DrawLine和 Graphics.DrawString 自己来“画”。

下面的代码可以对DataGridView第1列内容相同的单元格进行合并: private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)         {             // 对第1列相同单元格进行合并             if (e.ColumnIndex == 0 && e.RowIndex != -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);

                        // 画 Grid 边线(仅画单元格的底边线和右边线)                         //   如果下一行和当前行的数据不同,则在当前的单元格画一条底边线                         if (e.RowIndex < dataGridView1.Rows.Count - 1 &&                         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);                         // 画右边线                         e.Graphics.DrawLine(gridLinePen, e.CellBounds.Right - 1,                             e.CellBounds.Top, e.CellBounds.Right - 1,                             e.CellBounds.Bottom);

                        // 画(填写)单元格内容,相同的内容的单元格只填写第一个                         if (e.Value != null)                         {                             if (e.RowIndex > 0 &&                             dataGridView1.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString() ==                             e.Value.ToString())                             { }                             else                             {                                 e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,                                     Brushes.Black, e.CellBounds.X + 2,                                     e.CellBounds.Y + 5, StringFormat.GenericDefault);                             }                         }                         e.Handled = true;                     }                 }             }         }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有