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;这一句非常重要,必须加上,要不所画的内容就被后面的Painting事件刷新不见了!!!
                        e.Handled = true;
                    }
                }
            }

DataGridView 中合并单元格相关推荐

  1. Windows Forms DataGridView 中合并单元格

    Windows Forms DataGridView 没有提供合并单元格的功能,要实现合并单元格的功能就要在CellPainting事件中使用Graphics.DrawLine和 Graphics.D ...

  2. Excel 中合并单元格的快捷键(ALT+H+M+M)

    要在 excel 中合并单元格,首先选择要合并到一个单元格中的单元格,然后可以使用从ALT开始的快捷键,然后同时按H+M+M. 一旦我们使用快捷键执行该函数,它将弹出一条警告消息"合并单元格 ...

  3. 在合并单元格中数组公式无效_Excel中合并单元格困扰多年的难题,终于被我搞定了...

    Excel表格中如果存在合并单元格,经常会遇到一些问题,比如序号填充.数据统计或筛选等,如下图所示,需要根据指定人员姓名查找引用对应的销售部门和销售金额. 这个问题关键在于销售部门列存在合并单元格,如 ...

  4. markdown表格在github/gitee中合并单元格

    markdown表格合并单元格只能是在.md文件中使用html   代码 github/gitee中的显示效果 横向合并 <table>   <tr>     <td&g ...

  5. 在DataGrid中合并单元格行

    最近在做项目的时候经常遇到要合并单元格的情况,发现这个东西.net中并没有现成的方法,研究了一下,总结了两种方法. 这个主要都是行合并的,有以下两种情况 1.多行合并为一行,其中将某个或某几个单元格的 ...

  6. GridView中合并单元格

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...

  7. 【表格设置】HTML中合并单元格,对列组合应用样式,适应各浏览器的内容换行

    1.常用表格标签 普通    <table>           |           <tr>          |           |          <th ...

  8. html统计表合并单元格的快捷键,excel中合并单元格的快捷键的方法及设置技巧

    快捷键的熟练使用可以帮助我们在工作中提高效率,接下来为您讲解合并单元格的快捷键设置方法的图文演示 合并单元格在excel默认的情况下是没有快捷键的. 需要用以下方法设置 1.打开excel,选择工具- ...

  9. POI-获取Excel中合并单元格问题

    项目需要读取上传的excel中的合并单元格.于是找到POI包: 主要是poi-x.x.jar 和 poi-ooxml-x.x.jar包 首先是判断当前sheet页是否存在合并单元格,使用getNumM ...

最新文章

  1. nginx介绍及常用功能
  2. Linux下日志文件过大解决方案
  3. 大数据学习——Storm集群搭建
  4. Eclipse配置 Maven 异常处理
  5. Windows服务启动进程----Cjwdev.WindowsApi.dll
  6. 电脑怎么测试硬盘的读写速度_两块硬盘合二为一,电脑读写翻倍?这样的“好事”你必须得了解...
  7. swarm 和 k8s_Wildfly Swarm,朝着成熟和一小部分贡献
  8. 【CCF】201409-2 画图
  9. Java-HashMap实现原理
  10. STL中vector介绍
  11. 2、linux网络编程--无连接与面向连接的区别
  12. sessionStrorage + localStorage+ cookes
  13. Java中的DES加密与解密工具类
  14. 计算机房用还原保护软件,“小哨兵”还原卡v9.1在机房的巧妙应用
  15. RangeError: Maximum call stack size exceeded
  16. scp远程传输文件之权限被拒绝解决方案
  17. 加密一条保序的数据流
  18. Shell脚本三种循环
  19. 各大系统如何接入统一的登录认证
  20. MYSQL 时间格式化

热门文章

  1. Nexus 安装 使用说明
  2. Eclipse 下如何引用另一个项目的资源文件
  3. Rust中mut, , mut的区别
  4. CentOS/Ubuntu制作自动安装arm iso镜像
  5. Laravel核心解读--用户认证系统的实现细节
  6. LCN分布式事务框架实战
  7. 什么是Knative
  8. tomcat启动流程分析
  9. xmodmap使用指南
  10. DataBaseMetaData 从数据库中读取关于数据库属性