大家好,这是是雨夜,一位刚入行的萌新。刚刚开通了属于自己的优快云博客。以后会把自己工作上遇到的一些问题都通过博客的方式记录、分享出来,与大家一同探讨进步。
最近公司的需求是要把winform的datagridview的同一字段的相同内容的单元格合并,但是在把datagridview的内容输出到EXCEL时则是未合并的状态。在网上查询了很多资料,绝大部分的做法就是使用datagridview的cellpainting事件重绘单元格的内容。具体方法参考如下的链接:
https://www.cnblogs.com/zfanlong1314/archive/2012/04/15/2448432.html
这个方法虽然达到了合并单元格的目的,却也存在以下几点问题:
(1)合并单元格的内容未能居中
(2)合并的单元格不能选中
现对其代码做适当的修改,以解决上述问题。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//测试用数据
dataGridView.Rows.Add("美国", "纽约", "120万");
dataGridView.Rows.Add("美国", "华盛顿", "130万");
dataGridView.Rows.Add("美国", "波士顿", "140万");
dataGridView.Rows.Add("中国", "上海", "120万");
dataGridView.Rows.Add("中国", "北京", "130万");
dataGridView.Rows.Add("日本", "东京", "120万");
}
private void dataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
//只处理单元格的部分
if (e.RowIndex<=-1 ||e.ColumnIndex<=-1)
&n

本文介绍了如何在C# WinForm应用中实现DataGridView单元格的合并,尤其是在导出到Excel时保持合并状态。文章通过CellPainting事件重绘单元格,并解决了内容未居中和无法选中的问题。此外,还修复了复制单元格内容时重复的bug,通过添加KeyDown事件监听并控制剪贴板内容。
最低0.47元/天 解锁文章
925

被折叠的 条评论
为什么被折叠?



