`
yanyanquan
  • 浏览: 450528 次
  • 性别: Icon_minigender_1
  • 来自: 江门
社区版块
存档分类
最新评论

C# Winform DataGridView单元格合并

阅读更多
需要重绘单元格。在下面这个事件里写就可以了,下面这个例子只是对第一列中内容相同的数据合并,你可以根据自己的实际情况做调整,可以写了一个控件,可以随时设定合并哪一列,一次合并几行数据。
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;
}
}

}
}
分享到:
评论
1 楼 freefocus 2011-11-20  
大哥,你自己测试没,乱发啥呢?写好了,再发么!

相关推荐

    c# winform ===datagridview 单元格合并

    c# winform ===datagridview 单元格合并 c# winform ===datagridview 单元格合并 c# winform ===datagridview 单元格合并

    在Winfrom下的对DataGridView单元格合并

    Winform下DataGridView单元格合并技术详解 在Winform开发中,DataGridView控件是非常常用的控件之一,它可以用来显示和编辑数据。但是,在实际开发中,我们经常会遇到需要合并单元格的问题,例如,在DataGridView中...

    C#DataGridView单元格自动合并相同项自定义控件源码.zip

    总的来说,"C# DataGridView单元格自动合并相同项自定义控件源码"是一个实用的工具,它解决了`DataGridView`在显示大量重复数据时的常见问题,提高了数据可视化的效果。通过深入研究和理解这个源码,开发者可以学习...

    C# 重写datagridview(合并单元格与列头)

    以上就是关于C#中`DataGridView`控件单元格合并以及列头合并的基本实现思路。在实际项目中,可能还需要考虑更多细节,例如性能优化、异常处理以及用户交互的改进。对于`WindowsApplication15`这个项目,你可能已经...

    C# DataGridView单元格中动态添加多个控件

    这个主题“C# DataGridView单元格中动态添加多个控件”就涵盖了如何在`DataGridView`的单元格内部动态创建和管理多个控件。 在VS2012中,我们可以利用事件驱动编程和反射技术来实现这一目标。首先,我们需要理解`...

    DataGridView合并单元格(纵向合并及横向合并)

    通过上述代码片段,我们可以看到在DataGridView中实现单元格合并的过程不仅涉及到逻辑判断,还涉及到精细的绘图操作。正确的实现能够极大地提升数据展示的效果,使用户界面更加友好和直观。然而,这也意味着开发者...

    基于C#的WinForm中DataGridView控件操作汇总

    "基于C#的WinForm中DataGridView控件操作汇总" 在C#的WinForm中,DataGridView控件是一种常见的控件,用于显示和编辑表格数据。下面将对DataGridView控件的操作进行汇总。 一、单元格内容的操作 在DataGridView...

    DataGridView合并单元格

    这篇文档将详细阐述如何使用C#语言来实现`DataGridView`控件的单元格合并功能。 首先,我们要理解`DataGridView`控件的基本操作。`DataGridView`是由行(Row)和列(Column)组成的,每个单元格(Cell)位于特定的...

    DataGridView合并单元格和列头

    3. **设计时合并**:在设计时,可以通过设置`DefaultCellStyle`的`MergeStyle`属性来实现简单的单元格合并,但这种方式通常不适用于复杂的合并需求。 三、合并列头 合并列头通常涉及创建自定义`...

    C# winform datagridview 里的下拉框中 既可以从下拉框里选择数据,也可以让客户自己手动往里输入数据,

    在C# WinForm开发中,`DataGridView`控件是一个常用的数据展示工具,它允许用户查看、编辑和操作表格数据。而在这个场景下,我们关注的是如何在`DataGridView`的某一列实现一个下拉框(ComboBox),这个下拉框既能...

    c# winform datagridview 绑定集合中对象属性

    在C# WinForm开发中,`DataGridView`控件是一个常用的数据展示工具,它允许开发者将数据绑定到控件上,方便用户进行查看、编辑和操作。本资源主要讲解如何将集合中的对象属性绑定到`DataGridView`,从而实现数据的...

    C#winform datagridview 中显示HTML内容

    在C# WinForm开发中,`DataGridView`是一个常用的控件,用于展示表格数据。然而,标准的`DataGridViewTextBoxColumn`仅能支持基本的文本显示,对于富文本格式如HTML,它并不能直接处理。本教程将深入探讨如何在`...

    单击datagridview单元格插入时间控件

    本教程将详细介绍如何在`DataGridView`的单元格中插入一个时间控件,以便用户能够更直观、方便地输入或选择时间。 首先,我们需要理解`DataGridView`的基本用法。它可以从数据库或其他数据源加载数据,并允许用户...

    c# DataGridView单元格合并和二维表头.zip

    总结起来,C#中的`DataGridView`单元格合并和二维表头是提升用户界面复杂度和数据展示能力的重要技巧。通过熟练掌握这些技术,开发者可以创建出更符合用户需求、更具吸引力的桌面应用。在实际项目中,根据具体需求...

    winform datagridview 实现不同行相同列的合并

    3. **判断单元格是否已合并**:`IsMerged`方法检查单元格的格式,如果已设置`DefaultCellStyle`的`MergeAcross`属性,说明该单元格已与其他单元格合并。 ```csharp private bool IsMerged(DataGridViewRow row, int...

    DataGridView单元格合并及样式.rar

    在C# WinForm开发中,`DataGridView`控件是一个非常重要的组件,用于显示表格数据。它提供了丰富的功能,包括但不限于数据绑定、排序、过滤、编辑等。本教程将重点讲解如何实现`DataGridView`单元格的合并以及设置其...

    C# DataGridView单元格合并和二维表头

    本主题将深入探讨如何在C#中实现`DataGridView`的单元格合并以及创建二维表头,这对于创建复杂的报告和展示多级分类数据非常有用。 ### 1. DataGridView 单元格合并 单元格合并在`DataGridView`中可以用来整合信息...

    c# winform datagridview 多行表头

    在C# WinForm开发中,`DataGridView`是一个非常重要的控件,它用于显示表格数据,类似于Excel电子表格。然而,标准的`DataGridView`控件不直接支持多行表头,这意味着默认情况下,表头只能显示一行文字。但在某些...

Global site tag (gtag.js) - Google Analytics