datagridview合并单元格

private void dataGridView5_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    DataGridView dataGridView = this.dataGridView5;
    // 假设你的DataGridView有至少三行三列
    if (e.RowIndex == 2 && e.ColumnIndex == 2) //合并第三行最后两列
    {
        // 确定合并区域的起始单元格位置
        Rectangle rect = new Rectangle(
           e.CellBounds.Left - dataGridView.Columns[e.ColumnIndex - 1].Width,
            e.CellBounds.Top,
            e.CellBounds.Width + dataGridView.Columns[e.ColumnIndex - 1].Width,
            e.CellBounds.Height);

        // 使用双重缓冲绘制
        using (Graphics g = dataGridView.CreateGraphics())
        {
            // 保存 SmoothingMode 并设置为 AntiAlias
            SmoothingMode smoothingMode = g.SmoothingMode;
            g.SmoothingMode = SmoothingMode.AntiAlias;

            // 填充合并后的单元格背景色
            using (Brush backColorBrush = new SolidBrush(e.CellStyle.BackColor))
            //using (Brush backColorBrush = new SolidBrush(Color.Red))
            {
                g.FillRectangle(backColorBrush, rect);
            }

            // 画合并单元格边界线
            using (Pen gridLinePen = new Pen(dataGridView.GridColor))
            {
                绘制上边线
                //g.DrawLine(gridLinePen, e.CellBounds.Left, e.CellBounds.Top - 1, rect.Right - 1, e.CellBounds.Top - 1);
                绘制左边线
                g.DrawLine(gridLinePen, e.CellBounds.Left - 1, e.CellBounds.Top, e.CellBounds.Left - 1, rect.Bottom - 1);
                绘制右边线
                //g.DrawLine(gridLinePen, rect.Right, e.CellBounds.Top, rect.Right, rect.Bottom - 1);
                绘制下边线
                //g.DrawLine(gridLinePen, e.CellBounds.Left, rect.Bottom, rect.Right - 1, rect.Bottom);
            }


            // 绘制文本
            StringFormat format = new StringFormat()
            {
                Alignment = StringAlignment.Center,
                LineAlignment = StringAlignment.Center
            };
            g.DrawString(e.Value.ToString(), e.CellStyle.Font, new SolidBrush(e.CellStyle.ForeColor), rect, format);

            // 恢复 SmoothingMode
            g.SmoothingMode = smoothingMode;
        }

        // 取消默认的单元格绘制
        e.Handled = true;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java sql中 大于 小于 大于等于 小于等于 代替符号

在写java时sql会经常会忘记大于小于号的表示方法导致无法运行&#xff0c;总结一下 第一种方法&#xff1a; < &#xff1a;< < &#xff1a; < &#xff1a;> &#xff1a; > sql如下&#xff1a; create_at > #{startTime} and create_at < #{end…

MySQL innodb_buffer_pool_size 相关常用语句

对于MySQL速度慢的问题&#xff0c;除了优化 SQL 以外&#xff0c;应该必须优先想到的即使 MySQL 数据库的 innodb_buffer_pool_size 配置问题。 一般来说&#xff0c;innodb_buffer_pool_size 的默认大小都是很小的&#xff0c;尤其是 win 下其默认大小更是只有离谱的 8M。Li…

centos7中如何全局搜索一下nginx的配置文件?

在CentOS 7中搜索Nginx的配置文件&#xff0c;你可以使用一些常用的命令行工具&#xff0c;比如find、grep等。这些工具可以帮助你在文件系统中查找文件&#xff0c;也可以用来查找Docker容器内部的文件&#xff0c;只要你知道如何访问容器的文件系统。 1. 搜索系统中的Nginx配…

fuel无人机自主探索代码解读2——sdf_map.cpp【占据栅格地图、膨胀占据栅格地图、ESDF】

一、概述 sdf_map.cpp负责map_ros.cpp内部主体函数的具体实现&#xff0c;主要功能包括&#xff1a; 融合输入的深度或点云图生成全局占据栅格地图根据launch参数生成全局膨胀占据栅格地图基于膨胀占据栅格地图采用欧式距离传输生成局部的ESDF地图采用三线性插值的方式得到某…

深度学习面试题整理

文章目录 1. TensorFlow是什么&#xff1f;2. 计算图3. pytorch tensorflow4. 节点与张量类型5. tensorboard6. tensflow三个工作组件7. 大多数 TensorFlow 算法的常用步骤是什么&#xff1f;8. 处理TensorFlow中过拟合的方法9. 为什么出现过拟合10. 交叉验证11. 学习率12. 特征…

Python SMTP发送邮件时如何设置邮件地址?

Python SMTP发送邮件如何添加附件&#xff1f;如何使用SMTP发信&#xff1f; Python则通过其内置的smtplib模块和email模块为我们提供了实现这一功能的工具。在发送邮件的过程中&#xff0c;正确设置邮件地址是至关重要的&#xff0c;AokSend就来详细探讨一下如何在Python SMT…

韵搜坊 -- 前端整合Axios(联调后端)

文章目录 安装配置发送请求 官网&#xff1a;https://www.axios-http.cn/docs/intro 安装 npm install axios配置 坐标&#xff1a;plugins/myAxios.ts import axios from "axios";const instance axios.create({baseURL: "http://localhost:8101/api"…

Python专题:十三、日期和时间(1)

Python 日期和时间处理模块 模块就是别人写好的代码&#xff0c;通过将模块引入到代码里&#xff0c;使用已经实现好的功能 math模块&#xff0c;import模块名 time模块 时间戳&#xff1a;从公元1970年1月1日0点0分0秒起&#xff0c;到现在总共经历过的秒杀

Page对象的学习

在ASP.NET中&#xff0c;Page是一个核心对象&#xff0c;它代表了一个ASP.NET Web Forms页面。每一个.aspx文件在运行时都会被编译成一个Page类的实例&#xff0c;这个实例承载了页面的所有功能&#xff0c;包括处理用户输入、与数据库交互、渲染HTML输出等。 在ASP.NET Web F…

第 8 章 机器人底盘Arduino端编码器驱动(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.3 底盘实现_02Arduino端编码器驱动 测速是整个PID闭环控制中的必须环节&#xff0c;我们必须修改代码适配…

设计模式之策略模式(一)

背景: 下单时有很多情况,有的是用户下单,有的是卡密下单,有的是下游下单,有的是需要唤起支付,有的不需要支付,这样就需要写很多下单接口,下面使用策略模式优化这种情况 代码结构 com.example.order ├── controller │ └── OrderController.java ├── service │ …

使用frp通过SSH访问内网机器

frp是一个开源的内网穿透反向代理工具&#xff0c;支持传输层的tcp/udp协议&#xff0c;也支持应用层的http/https协议。 服务端 服务端下载安装 在有公网地址的机器上下载并解压。 wget -c https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_a…

odoo16 银行对账单导入改造

解决问题: odoo原生功能的话 是不能在系统上临时处理文件内容的&#xff0c;只会提示文件内容格式不对。 原始文件格式 在头部与尾部 格式问题&#xff0c;例如csv文件和 C53 文件&#xff0c;做一个前置弹框处理数据之后再导入 camt效果: csv效果:

汇聚荣电商:拼多多开店需要多少费用?

想要在拼多多这个巨大的电商平台上开一家属于自己的店铺&#xff0c;很多创业者都会关心一个问题&#xff1a;开店需要多少费用?答案并不复杂&#xff0c;但背后的经营哲学和策略却值得深究。接下来&#xff0c;让我们从四个不同的方面来详细探讨这个问题。 一、开店成本分析 …

通过vue2来类比学习vue3

需求&#xff1a;之前有vue2基础&#xff0c;需要学习使用vue3&#xff1b;当然小白也可以&#xff08;建议先学习vue2&#xff09; 思路&#xff1a;如果已经学习完vue2&#xff0c;那么vue3直接就是小case 一、vue3页面结构&#xff08;归纳为三种&#xff09; 1.传统的vu…

GPT-4o,AI实时视频通话丝滑如人类,Plus功能免费可用

不开玩笑&#xff0c;电影《她》真的来了。 OpenAI最新旗舰大模型GPT-4o&#xff0c;不仅免费可用&#xff0c;能力更是横跨听、看、说&#xff0c;丝滑流畅毫无延迟&#xff0c;就像在打一个视频电话。 现场直播的效果更是炸裂&#xff1a; 它能感受到你的呼吸节奏&#xf…

10G UDP协议栈 IP层设计-(6)IP TX模块

一、模块功能 1、上层数据封装IP报文头部 2、计算首部校验和 二、首部校验和计算方法 在发送方&#xff0c;先把IP数据报首部划分为许多16位字的序列&#xff0c;并把检验和字段置零。用反码算术运算把所有16位字相加后&#xff0c;将得到的和的反码写入检验和字段。接收方收…

C++(week2):C语言中高级

文章目录 (八) 指针0.概念1.指针基础(1)指针的声明(2)指针的两个基本操作①取地址运算符 &②解引用运算符 * (3)野指针①野指针②空指针③指针变量的赋值 vs 指针变量指向对象的赋值 (4)指针的应用①指针作为参数进行传递②指针作为返回值③拓展&#xff1a;栈帧 (5)常量指…

【面试干货】HTTPS 工作原理

【面试干货】HTTPS 工作原理 1、握手阶段&#xff08;Handshake&#xff09;2、密钥协商阶段3、加密通信阶段4、结束通信阶段 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff…

C语言实现通讯录,包括增删改查以及动态开辟内存,写入文件等功能

文章目录 前言一、注意二、源码1. test.c源文件2. contact.h头文件3. contact.c源文件 总结 前言 C语言实现通讯录&#xff0c;包括增删改查以及动态开辟内存&#xff0c;写入文件等功能 一、注意 在通讯录菜单栏使用枚举定义PeoInfo类型时&#xff0c;每个结构体类型的成员…