DataGridView 中合并单元格

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;
                    }
                }
            }

时间: 2024-11-13 07:30:27

DataGridView 中合并单元格的相关文章

Excel中合并单元格中快速添加序号的方法

  Excel中合并单元格中快速添加序号的方法          如下图所示,需要在数据的A列加入序号: 如果我们利用传统的拖动填充方式添加序号,系统会弹出这样的提示:"此操作要求合并单元格都具有相同大小" 即不能对数据源格式进行修改,又不能用常规方法添加序号,怎么办呢? 要手工逐个的填写吗? 答案是否定的,如果数据量太大的话,我们不可能一个一个去手工添加吧. 这里给大家介绍一个简单的方法. 首先,选中要添加序号的单元格: 编辑栏输入公式: =MAX($A$1:A1)+1 注意关键的一

Excel中合并单元格的几种方法及合并单元格快捷键

  Excel中合并单元格的几种方法及合并单元格快捷键          如下图所示,希望将A1到E1,这之间所有单元格合并成一个大单元格操作方法如下: 合并单元格方法一:利用格式菜单上的"合并及居中"按钮合并单元格 ①首先,选中A1.B1.C1.D1.E1这些单元格; ②然后单击"格式"工具栏上面的"合并及居中"按钮; 此时,这几个单元格就已经合并成了一个大单元格了,是不是很简单呀. 合并单元格方法二:利用"设置单元格格式"

在Word 2007表格中合并单元格

在Word2007文档表格中,通过使用"合并单元格"功能可以将两 个或两个以上的单元格合并成一个单元格,从而制作出多种形式.多种功能的 Word表格.用户可以在Word2007文档表格中通过三种方式合并单元格,分别简述 如下. 方式1:打开Word2007文档窗口,选中准备合并的两个或两个以上的单元格. 右键单击被选中的单元格,在打开的快捷菜单中选择"合并单元格" 命令,如图2009011304所示. 图2009011304 选择"合并单元格"命

Excel中合并单元格的两种常用方法

  在本文的范例中,要做的就是合并A1.B1两个单元格,来得到表格的标题. 合并单元格的方法一 选中需要合并的单元格,这里就是A1和B1两个单元格,然后切换到"开始"选项卡,在"对齐方式"组中单击"合并后居中"按钮即可. 合并单元格的方法二 1.选中A1和B1单元格,单击鼠标右键,选择"设置单元格格式". 2.切换到"对齐"选项卡,在"文本控制"下勾选"合并单元格".

Excel 中合并单元格同时合并内容之函数法

如果我们要对不规则区域进行合并单元格的批量操作,如下图中将 A 列转成 D 列,可以借助分类汇总功能过渡实现.但如果除了将单元格合并以外,还要将内容也合并,如下图中的将B列转换成 E 列,该如何处理呢? 比较简单的一个办法是借助公式生成如下图 DE 两列的结果,然后再用<不规则区域合并单元格的批量操作>中描术的方法处理,以达到最终的目的: E2 单元格里的公式是: =PHONETIC(OFFSET(B$1,MATCH(D2,A$2:A$10,),,COUNTIF(A:A,D2))) E 列其他

Excel中合并单元格的快捷键方法

1.首先,我们打开Excel表格,然后看看整个菜单栏中的栏目,如图所示: 2.在我们打开表格之后,然后我们点击菜单栏中的"工具",然后选择该选项中的"自定义",如图所示: 电脑教程 3.在我们选择"自定义"之后,就会发现弹出一个窗口,但是这个窗口对我们来说,不需要做任何的点击.然后我们找到工具栏,在居中并对其图标上单击鼠标右键,将会弹出下拉菜单,然后选择"总是文字",如图所示: 4.在选择"总是只用文字"之

Excel2013中合并单元格有什么技巧?

  在使用Excel2013的过程中,我们常常会遇到需要合并单元格的情况,不论你是合并同行单元格中的内容,还是合并同列单元格中的内容,抑或是要合并某几个不同行列的单元格内容,在这里,我们都能找到最适合的方法,一起来瞧瞧吧. 合并同一行中连续单元格 用Excel2013打开需要合并同行单元格的工作表,例如,我们现在来合并A1至D1单元格中的内容,选中E1单元格,输入函数"=PHONETIC(A1:D1)",然后按下回车键,就能看到A1至D1四个单元格中的内容已经合并到E1单元格中了,效果

excel中合并单元格的快捷键的方法及设置技巧

  快捷键的熟练使用可以帮助我们在工作中提高效率,接下来为您讲解合并单元格的快捷键设置方法的图文演示合并单元格在excel默认的情况下是没有快捷键的.需要用以下方法设置 1.打开excel,选择工具--点击"自定义".这时会出现一个"自定义"表单.不要理会这个表单,上面没有可供选择的项目. 2.右键点击"合并单元格"的图标.发现没有,和平时右击不一样了! 3.选择"总是只用文字"选项.这时平时用来合并的按钮就变成了 "

C++ datagridview动态合并单元格代码

效果如下图第一列"国家",相同的数据可以合并为一个单元格显示. 我的datagridview数据源是通过图形化界面拖放dataset与数据库教程绑定的 /// <summary> /// 合并GridView中某列相同信息的行(单元格) /// </summary> /// <param name="GridView1">GridView</param> /// <param name="cellNum