• DataGridView 合并同一列中值相同的相邻单元格 合并单元格


            /// <summary>
            
    /// 合并同一列中值相同的相邻单元格
            
    /// </summary>
            
    /// <param name="dgv">DataGridView</param>
            
    /// <param name="columnIndexList">要合并的列的索引列表</param>
            
    /// <param name="e">当前单元格的属性访问器</param>
            private void MergeCellInOneColumn(DataGridView dgv, List<int> columnIndexList, DataGridViewCellPaintingEventArgs e)
            {
                if (columnIndexList.Contains(e.ColumnIndex) && e.RowIndex != -1)
                {
                    Brush gridBrush = new SolidBrush(dgv.GridColor);
                    Brush backBrush = new SolidBrush(e.CellStyle.BackColor);
                    Pen gridLinePen = new Pen(gridBrush);

                    //擦除
                    e.Graphics.FillRectangle(backBrush, e.CellBounds);

                    //画右边线
                    e.Graphics.DrawLine(gridLinePen,
                       e.CellBounds.Right - 1,
                       e.CellBounds.Top,
                       e.CellBounds.Right - 1,
                       e.CellBounds.Bottom - 1);

                    //画底边线
                    if ((e.RowIndex < dgv.Rows.Count - 1 && dgv.Rows[e.RowIndex + 1].Cells[e.ColumnIndex].Value.ToString() != e.Value.ToString()) ||
                        e.RowIndex == dgv.Rows.Count - 1)
                    {
                        e.Graphics.DrawLine(gridLinePen,
                            e.CellBounds.Left,
                            e.CellBounds.Bottom - 1,
                            e.CellBounds.Right - 1,
                            e.CellBounds.Bottom - 1);
                    }

                    //写文本
                    if (e.RowIndex == 0 || dgv.Rows[e.RowIndex - 1].Cells[e.ColumnIndex].Value.ToString() != e.Value.ToString())
                    {
                        e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
                            Brushes.Black, e.CellBounds.X + 2,
                            e.CellBounds.Y + 5, StringFormat.GenericDefault);
                    }

                    e.Handled = true;
                }
            }

    使用方法

            private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
            {
                List<int> indexs = new List<int>() { 01 };
                MergeCellInOneColumn(dataGridView1, indexs, e);
            }
  • 相关阅读:
    window.location.href的用法
    echarts折线图阴影设置
    SVN使用教程图文教程
    jksj算法训练营-第二课02 时间复杂度和空间复杂度分析
    jkjj算法训练营笔记-第二课01 训练环境配置、编码技巧和code style
    MySQL 基础模块的面试题总结
    MySQL 事务的面试题总结
    MySQL 中锁的面试题总结
    MySQL 命令和内置函数
    MySQL 性能优化 & 分布式
  • 原文地址:https://www.cnblogs.com/bloodofhero/p/2578068.html
Copyright © 2020-2023  润新知