zoukankan      html  css  js  c++  java
  • 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);
            }
  • 相关阅读:
    SQL Convert的用法[转]
    C#里巧用DateTime预设一些可选的日期范围(如本年度、本季度、本月等)
    JS 操作IE游览器常用函数:window.external,history,document.execCommand
    sqoop基本应用
    SQLSever图形化界面基本使用
    hadoop 无法退出安全模式 内存够用
    Class<?> b=Class.forName(cName);
    每日学习20210925
    每日学习20210924
    hive 报错:Map local work exhausted memory
  • 原文地址:https://www.cnblogs.com/bloodofhero/p/2578068.html
Copyright © 2011-2022 走看看