Winform中DataGridView中实现一个单元格增加多个操作按钮

news2024/11/24 1:48:10

1.表格名称:dgv;操作列名称:ColOperate

2.相关代码如下:

 private void Load(object sender, EventArgs e)
 {
    
    //初始化调用 前提是表格先填充好数据
     //循环遍历添加每行的控件
     for (int i = 0;i < dgv.Rows.Count; i++)
     {
         MulAutoBtnEdit(i);
     }
 }
/// <summary>
/// 绘制单元格内的控件
/// </summary>
/// <param name="rowIndex"></param>
private void MulAutoBtnEdit(int rowIndex)
{
   
    int index = this.dgv.Columns["ColOperate"].Index;
    Label btnAdd = GetBtnByType("BtnAdd", "新增", rowIndex);
    Label btnEdit = GetBtnByType("BtnEdit", "修改", rowIndex);
    Label btnDel = GetBtnByType("BtnDel", "删除", rowIndex);
    this.dgv.Controls.Add(btnAdd);
    this.dgv.Controls.Add(btnEdit);
    this.dgv.Controls.Add(btnDel);
    Rectangle rectangle = this.dgv.GetCellDisplayRectangle(index, rowIndex, true);//获取当前单元格上的矩形区域
    btnAdd.Size = btnEdit.Size = btnDel.Size = new Size(rectangle.Width / 3 + 1, rectangle.Height);
    btnAdd.Location = new Point(rectangle.Left, rectangle.Top+5);
    btnEdit.Location = new Point(rectangle.Left + btnAdd.Width, rectangle.Top+5);
    btnDel.Location = new Point(rectangle.Left + btnAdd.Width + btnDel.Width, rectangle.Top+5);
}
/// <summary>
/// 封装需要显示的控件
/// </summary>
/// <param name="strBtnName"></param>
/// <param name="strBtnText"></param>
/// <param name="rowIndex"></param>
/// <returns></returns>
private Label GetBtnByType(string strBtnName, string strBtnText,int rowIndex)
{
    Label lab = new Label();
    lab.Name = strBtnName;
    lab.Text = strBtnText;
    lab.ForeColor = strBtnName== "BtnDel"? Color.Red: Color.FromArgb(64, 158, 255);
    lab.BackColor= Color.Transparent;
    lab.Cursor= Cursors.Hand;
    lab.Tag= rowIndex.ToString();
    lab.AutoSize= true;
    lab.Click += lab_Click;
    return lab;
}
/// <summary>
/// 控件对应的点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lab_Click(object sender, EventArgs e)
{
    if (sender is Label)
    {
        Label btn = (Label)sender;
        int index=Convert.ToInt32(btn.Tag);
        F101_UserInfoModel uInfo= dgv.Rows[index].DataBoundItem as F101_UserInfoModel;
        MessageBox.Show(string.Format("{0}{1}的数据", btn.Text,uInfo.UserName));
    }
}

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

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

相关文章

【最新!企知道AES加密分析】使用Python实现完整解密算法

文章目录 1. 写在前面2. 过debugger3. 抓包分析4. 断点分析5. Python实现解密算法 1. 写在前面 最近华为各方面传递出来的消息无不体现出华为科技实力与技术处于遥遥领先的地位。所以出于好奇想要了解一下咱们国内这些互联网科技企业有哪些技术专利&#xff0c;于是就有了这篇文…

怎么防止360安全卫士修改默认浏览器?

默认的浏览器 原先选项是360极速浏览器&#xff08;如果有安装的话&#xff09;&#xff0c;我这里改成了Chrome。 先解锁 才能修改。

相伴六年,Smartbi与荣耀共建数据化运营新生态

“从 2018 年到 2023 年&#xff0c;整整六年的时间里面&#xff0c;我们从最开始使用Smartbi功能里最朴素的真自助能力&#xff0c;到现在做了BI、AI融合&#xff0c;过去六年业务的发展离不开Smartbi的大力支持&#xff0c;Smartbi与荣耀自有平台能力打通融合&#xff0c;相辅…

SpringBoot2.0(mybatis-plus常见的增删改查和分页)

目录 一&#xff0c;mybatis-plus常见注解二&#xff0c;创建一个工具类和启动类三&#xff0c;创建实体类四&#xff0c;创建mapper接口五&#xff0c;创建service接口和impl类六&#xff0c;创建配置类七&#xff0c;创建controller八&#xff0c;使用测试工具测试增删改查和…

Linux编译安装dig9.18

Linux编译安装dig9.18 背景查看dig版本 编译安装dig安装依赖包下载dig压缩包解压编译安装创建软链接 结果验证 背景 Centos7的dig版本是9.11&#xff0c;体验9.18新版本的功能特性。 例如&#xff1a; 使用yaml格式输出。 # 使用yaml格式输出 dig yaml google.com查看dig版本…

3、ARM寄存器组织

ARM寄存器组织 1、寄存器 概念 寄存器是处理器内部的存储器&#xff0c;没有地址 作用 一般用于暂时存放参与运算的数据和运算的结果 分类 包括通用寄存器、专用寄存器、控制寄存器 2、ARM寄存器 注&#xff1a; 在某个特定的模式下&#xff0c;只能使用当前模式下的…

什么测试自动化测试?

什么测试自动化测试&#xff1f; 做测试好几年了&#xff0c;真正学习和实践自动化测试一年&#xff0c;自我感觉这一个年中收获许多。一直想动笔写一篇文章分享自动化测试实践中的一些经验。终于决定花点时间来做这件事儿。 首先理清自动化测试的概念&#xff0c;广义上来讲&a…

用Python判断是否为闰年并计算生肖年

1 问题 润平年以及生肖是新的一年到来我们应该了解的信息。那么如何利用python程序计算快速计算该年为什么年&#xff1f; 2 方法 利用if条件判断语句实现。 代码清单 1 year eval(input(请输入咨询的年份:))if (year % 4 0 and year %100 ! 0) or year % 400 0: print(…

递归视角下

def listSum(numbers): if not numbers: return 0 else: (f, rest) numbers return f listSum(rest)myList (1, (2, (3, (4,None))))total listSum(myList)print(total) while循环何时退出&#xff1f; 恐怕是while循环技巧所在&#xff0c;即选择恰…

4G模块驱动移植

一、4G模块概述 1、调试的模块型号是广和通的 NL668-EAU-00-M.2。 2、使用的接口是 M.2 Key-B。实际只用到了M2里的USB接口。 调试过程 以QMI_WWAN号方式进行说明&#xff0c;其他拨号方式也试过。最后以QMI_WWAN方式调通了&#xff0c;拨号成功了。 其他拨号方式因为现有文档…

上四休三,未来的期许

近日“少上一天班&#xff0c;究竟香不香”引发关注&#xff0c;英国媒体2月21日报道&#xff0c;一项全世界目前为止参加人数最多的“四天工作制”试验&#xff0c;不久前在英国取得了成功。很多人表示上过四天班之后&#xff0c;给多少钱也回不去五天班的时代了。 来百度APP畅…

【Vue入门】语法 —— 插值、指令、过滤器、计算属性、监听器

目录 一、模版语法 1.1 插值 1.1.1 文本 1.1.2 html解析 1.1.3 属性 1.1.4 表达式 1.2 指令 1.2.1 核心指令 1.2.3 动态参数 二、过滤器 2.1 局部过滤器 2.2 全局过滤器 三、计算属性 四、监听器 五、排座案例 小结&#xff1a;计算属性和监听属性的区别 一、模…

Linux ____02、Linux开关机、目录介绍、文件目录相关命令(常用命令)

Linux开关机、目录介绍、目录相关命令&#xff08;常用命令&#xff09; 一、Linux开关机二、目录介绍三、目录相关命令&#xff08;常用命令&#xff09;1、ls命令&#xff0c;列出目录内容2、cd命令&#xff0c;切换目录&#xff1b;pwd&#xff0c;查看当前工作路径3、mkdi…

fire-voc 火光 烟火 火灾 目标检测数据集

一年中最容易引发火灾的季节是在冬季&#xff0c;主要原因有这样几点。 1、秋冬季节,随着用火、用电、用气增加,加上天气干燥,棉花、木材 、衣物等物体内含有的水分也较低。2、秋冬季风力较大,一旦有火苗冒起就很容易随风蔓延,是火灾的高发期。3、春季也是火灾多发季节&#x…

malloc是如何实现内存分配的?

文章目录 前言一、malloc实现原理概括&#xff1f;二、brk() 函数与mmap()函数三、mmap实现原理普通读写与mmap对比mmap内存映射实现过程mmap 的适用场景 前言 在C和C中&#xff0c;malloc函数是用于动态分配内存的常用函数。本文将深入探究malloc函数的内存分配实现机制&…

背靠背 Nature 新方向 - 蛋白质结构家族图谱的“潘多拉魔盒”

NBT - Foldseek快速准确搜索结构相似的蛋白&#xff0c;AlphaFold蛋白质数据库提供了一个快速的搜索工具 AlphaFold的极限:高中生揭示人工智能在生物信息学挑战中的缺陷AlphaFold2开源了&#xff0c;不是土豪也不会编程的你怎么蹭一波&#xff1f; 对蛋白结构的大规模分析揭示了…

对抗网络爬虫:反爬虫技术与策略详解

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 在今天的互联网世界中&a…

机器学习入门与实践:从原理到代码

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 在本文中&#xff0c;我…

PDF编辑内容怎么做?这几个方法快来了解

PDF&#xff08;便携式文档格式&#xff09;是一种常用的文档格式&#xff0c;但有时我们需要对PDF文件进行编辑&#xff0c;那么小伙伴们知道PDF编辑内容怎么做吗&#xff1f;下面将介绍几种编辑PDF的方法以及注意事项。 1.使用手机编辑PDF文档 最近有个小伙伴说由于工作经常…

模拟实现C语言--strcpy函数

模拟实现C语言–strcpy函数 文章目录 模拟实现C语言--strcpy函数一、strcpy函数是什么&#xff1f;二、使用示例三、模拟实现 一、strcpy函数是什么&#xff1f; strcpy函数是将字符串中的内容复制到另一个字符串中使用的库函数 char* strcpy(char * destination, const char…