.net DataGirdView 通过列索引修改单元格字体

news/2024/9/21 12:34:38

场景是这样、我需要DataGirdView某几列数量大于0字体就变成蓝色,某几列超过标准值字体就变成红色

具体列名属性
    void InitCols(){var col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "OrderNo", " 工单号");col.Width = 125;// col.Frozen = true;_DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "PrdCode", "料号");_DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "MaterialName", "型号");col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "PlanStartDate", " 计划工单时间");col.DefaultCellStyle.Format = "yyyy-MM-dd";// col.Frozen = true;col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "OrderCount", " 工单投产量(K)");col.DefaultCellStyle.Format = "0.###";//col.Frozen = true;col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "GJKS", " 固晶");col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "GJJS", " 待固晶");col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "HXKS", " 焊线");// col.Frozen = true;col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "HXJS", " 待焊线");// col.Frozen = true;col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "MYKS", " 模压");//col.Frozen = true;col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "MYJS", " 待模压");//col.Frozen = true;col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "QGKS", " 切割");//col.Frozen = true;col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "QGJS", " 待切割");//col.Frozen = true;col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "FGKS", " 分光");//col.Frozen = true;col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "FGJS", " 待分光");//col.Frozen = true;col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "BDKS", " 编带");//col.Frozen = true;col.DefaultCellStyle.Format = "0.###";col = _DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail, "BDJS", " 编带结束");// col.Frozen = true;col.DefaultCellStyle.Format = "0.###";}

添加事件
image

在列名字前加上DataGirdView_col就能检索到对应列
image

方法的具体编写 private void dgvDetail_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e){
        DataGridView dgv = (DataGridView)sender;// 判断当前单元格所在的列是否是待完成列// 您可以根据列名或者列索引来判断// 在这个示例中,我们假设这些列是按列名来判断的string[] completionColumns = { "dgvDetail_colGJJS", "dgvDetail_colHXJS", "dgvDetail_colMYJS", "dgvDetail_colQGJS", "dgvDetail_colFGJS", "dgvDetail_colBDJS" };string columnName = dgv.Columns[e.ColumnIndex].Name;// 如果列名在待完成列数组中if (completionColumns.Contains(columnName)){// 获取单元格的值if (e.Value != null && decimal.TryParse(e.Value.ToString(), out decimal cellValue)){// 如果单元格的值大于 0,则将字体颜色设置为蓝色if (cellValue > 0){e.CellStyle.ForeColor = Color.DarkBlue;}else{// 重置为默认颜色e.CellStyle.ForeColor = dgv.DefaultCellStyle.ForeColor;}}}string[] processColumns = { "dgvDetail_colGJKS", "dgvDetail_colHXKS", "dgvDetail_colMYKS", "dgvDetail_colQGKS", "dgvDetail_colFGKS", "dgvDetail_colBDKS" };// 检查列名是否是工序实际数量列if (processColumns.Contains(columnName)){// 获取当前行var row = dgv.Rows[e.RowIndex];// 获取当前单元格的实际数量值if (decimal.TryParse(row.Cells[columnName].Value?.ToString(), out decimal actualQty)){// 获取工单投产量if (decimal.TryParse(row.Cells["dgvDetail_colOrderCount"].Value?.ToString(), out decimal planQty)){// 比较实际数量和工单投产量if (actualQty > planQty){// 如果实际数量大于工单投产量,将单元格的字体颜色设置为红色e.CellStyle.ForeColor = Color.Red;}else{// 否则保持默认颜色e.CellStyle.ForeColor = dgv.DefaultCellStyle.ForeColor;}}}}}

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

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

相关文章

原型设计软件对比以及介绍项目EventSphere原型设计方案

一、介绍项目的原型设计方案 项目名称:EventSphere EventSphere 旨在建立一个全面的、多维度的学生活动发布平台,涉及不仅是面对面的实体活动,还包括虚拟活动的体验,如虚拟现实(VR)活动。该平台计划提供以下功能:用户注册与登录 :允许学生、教师和活动组织者创建账户并登…

初识汇编-第一篇

计算机的组成-cpu的模型

dotnet 后台线程发送 X11 窗口消息

本文将告诉大家如何在 dotnet 里面的后台线程向自己进程内的窗口发送消息核心是通过 XSendEvent 发送消息,发送消息想要有反应需要另开 XOpenDisplay 获取 display 对象,最后再将其关闭才能发送出去 核心代码如下 _ = Task.Run(async () => {while (true){await Task.Dela…

dotnet X11 窗口之间发送鼠标消息 模拟鼠标输入

本文记录我阅读 Avalonia 代码过程中所学习到的在 X11 的窗口之间发送鼠标消息,可以跨进程给其他进程的窗口发送鼠标消息,通过此方式可以实现模拟鼠标输入直接使用 XSendEvent 给指定窗口发送消息即可,如以下示例代码var xEvent = new XEvent{MotionEvent ={type = XEventNa…

28-SpringMVC源码解析

Quiz:Spring和SpringMVC整合使用时,会创建一个容器还是两个容器(父子容器?) DispatcherServlet初始化过程中做了什么? 请求的执行流程是怎么样的?SpringMVC 是基于 Servlet 和 Spring 容器设计的 Web 框架。1. Servlet 回顾 Servlet 接口及其实现类结构:public interfa…

读人工智能时代与人类未来笔记03_演变

读人工智能时代与人类未来笔记03_演变1. 演变 1.1. 每个社会都找到了属于自己的一套适应世界的方法 1.1.1. 适应的核心,是有关人类心智与现实之间关系的概念 1.1.2. 人类认识周围环境的能力 1.1.2.1. 这种能力通过知识获得,同时…

爱芯通元产品与关键技术

爱芯通元产品与关键技术 混合精度NPU 以算子为原子指令集的AI计算处理器爱芯通元NPU采用多线程异构多核设计,实现算子、网络微结构、数据流和内存访问优化,高效支持混合精度算法设计,natively支持Transformer网络结构,为大模型在边缘侧、端侧的应用提供良好的基础。 经过多…

ffmpeg 去除音频中的静音

去除音频中的静音 //去除所有超过0.3秒的静音部分 ffmpeg -i input.mp3 -af silenceremove=stop_periods=-1:stop_duration=0.3:stop_threshold=-30dB -y output.mp3ffmpeg音频处理常用命令:调节音量大小ffmpeg -y -i input.mp3 -af volume=-10dB output.mp3 \n 主要是volume参…