需要重绘单元格。在下面这个事件里写就可以了,下面这个例子只是对第一列中内容相同的数据合并,你可以根据自己的实际情况做调整,可以写了一个控件,可以随时设定合并哪一列,一次合并几行数据。
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;
}
}
}
}
分享到:
相关推荐
c# winform ===datagridview 单元格合并 c# winform ===datagridview 单元格合并 c# winform ===datagridview 单元格合并
vb.net2008 winform DataGridView单元格合并和二维表头。C#转vb.net,自测通过。
C#winform开放过程中经常遇到关于DataGridView控件数据的加载,本资源是DataGridView自定义控件,使单元格内相同的内容项自动合并,不相同的还是按原始内容展示。
网络采集,精心整理,C# Winform 下的对DataGridView单元格合并,包含纵向及横向代码,有效果图。
C# DataGridView单元格中动态添加多个控件。开发环境VS2012。
C# winform datagridview 里的下拉框中 既可以从下拉框里选择数据,也可以让客户自己手动往里输入数据,
基于C#的WinForm中DataGridView控件操作汇总
C# winfrom DataGridView单元格合并及样式 .net
c# DataGridView单元格合并和二维表头.zip
DataGridView合并单元格(纵向合并及横向合并) 京华志&精华志出品 分享资源 C# ASP.NET SQL DBA 源码
C# winform 自定义滚动条
C# DataGridView单元格合并和二维表头
C#语言WinForm框架下DataGridView合并表头列头和单元格示例,WPF下也可参考应用
完全是源码,可以很好地解决C# Winform中对DataGridView 进行排序后,行的颜色,单元格颜色改变了的方法: 在赋数据源时:把 DataGridView1.DataSource=DataTable1,去掉,用我提供的源码的方法,再数据源就可以了: 改成...
C# windows datagridview表格行上下拖动示例 一个简单的示例代码 具体可以根据需求自行修改
datagridview单元格合并,二维表头绘画
1、实现在DataGridView控件中添加进度条列,以进度条及白分比的方式在单元格中显示数据。 2、实现在进度条中显示进度百分比文本。
在自定义类似dropdownlist类型的单元格时,按照通常的方法,在点击输入的时候显示的是正常的文本,而输入完成后单元格显示的是实际值,并不符合我们的合适习惯. 本例通过在EditingControlFormattedValue中返回combobox...
winForm扩展DataGridView控件实现一列多操作(如查看详情、修改、删除等)按钮,使用VB.NET语言通过扩展DataGridViewButtonCell单元格,在单元格内画按钮的方式来实现。具体效果请看我的博文...