问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C#DataGridView怎么合并单元格

发布网友 发布时间:2022-04-26 10:58

我来回答

1个回答

热心网友 时间:2022-04-27 18:35

需要重绘单元格。在下面这个事件里写就可以了,下面这个例子只是对第一列中内容相同的数据合并,你可以根据自己的实际情况做调整,可以写了一个控件,可以随时设定合并哪一列,一次合并几行数据。
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+2,
e.CellBounds.Bottom - 1, e.CellBounds.Right - 1,
e.CellBounds.Bottom - 1);
//画最后一条记录的底线
if (e.RowIndex == dataGridView1.Rows.Count - 1)
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left+2,
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);

// 画左边线
e.Graphics.DrawLine(gridLinePen, e.CellBounds.Left +2,
e.CellBounds.Top, e.CellBounds.Left +2,
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;
}
}

}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的面包机和面要多久 美的面包机和面的时间要多长 美的面包机怎么用手动操作 如何用美的面包机发面 如何用美的面包机和面 美的面包机如何和面 CDR教程—教你如何使用CorelDRAW复制图形方法 苹果手机微信怎么换漂亮字体(苹果手机微信怎么换行输入) 有什么好用的app转换字体 手写转文字的软件 erp可以看评论地址吗 淘宝评论url是什么意思? 造成混凝土收缩裂缝的主要原因是什么?如何防治? 为什么装不了3dmax2010,提示系统无法打开指定的设备或文件,电脑买来几天了,主要是装它的,现在急死我了 wpf grid百分比设置以及布局思想 系统装完了能用,但开机不读取 一道超难的c语言迷宫问题 wpf怎么指定一个元素布局在底层 新装的win10系统,现在软件安装不了,出现windows无法访问指定设备,路径或程序,你可 混凝土防裂措施有哪些? amcharts中chart.dataProvider数据来源可以有多个吗 我的系统安装软件时候提示无法打开指定的设备或文件!!! 电脑重装系统中断后,开机出现磁盘读取错误 混凝土工程出现撞击裂缝是什么原因,如何预防? delphi ehlib总是出现FixGridlinecolor属性does not exist 程序是我自己开发的,后然系统重装过。就这样了 HTML中 图表中的网格怎么去除掉 装系统时不能读取所选的引导盘是什么原因? 怎么修改ListView的GridLine的颜色 envi如何在图像上添加网格 混凝土裂缝有哪些预防措施 安装软件的时候提示windows无法访问指定设备,,大神求指教 如何给gridview的单元格加上分割线 recyclerview怎么切换线性和grid 水泥混凝土路面裂缝的原因及处理方法。。。 财付通怎么取消绑定 财付通绑定了银行卡怎么解除绑定 微信怎么解除绑定财付通 微信绑定银行卡怎么解除财付通快捷支付 微信解绑银行卡,预留手机号会收到解除绑定的短信通知吗? 我从中国银行APP上面的快捷支付上面解约了财付通和支付宝的关联,那别人绑定我的银行卡是不是也解绑了? 微信绑定银行卡? 财付通和微信的快捷支付无法绑定银行卡,与预留手机号不符。 微信绑定银行卡怎么解除财付通快捷支付? 丰镇的风土人情是什么 在你们家乡,文明全国的饮食文化都有哪些? 谁知道抿豆面的机器叫什么? 山西特色面食 山西豆面抿面怎么和面,豆面抿面的家常做法 面抿面怎么做最好吃 图解豆面抿面的做法 扁豆面粉怎么做抿豆面 - 信息提示 微信扫支付码只扫出一串数字,想问一下怎样才能变回之前的那样,不然