首页 > 其他分享 >.net DataGirdView 通过列索引修改单元格字体

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

时间:2024-05-15 09:01:21浏览次数:19  
标签:BuildCol Format DefaultCellStyle 单元格 DataGridView col dgvDetail net DataGirdView

场景是这样、我需要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;
                    }
                }
            }
        }


    }

标签:BuildCol,Format,DefaultCellStyle,单元格,DataGridView,col,dgvDetail,net,DataGirdView
From: https://www.cnblogs.com/gho13954/p/18191910

相关文章

  • XShell执行systemctl stop network命令后断开连接,并重连失败
    在XShell中执行命令systemctlstopnetwork后,断开了与虚拟机的连接,进行重新连接,显示连接失败,停止虚拟机网络服务后,XShell无法继续连接。需要重启虚拟机的网络服务【1】重启解决systemctlstopnetwork是暂时关闭服务,不是永久的,所以重启后会自启。在主机有网络的情况下,重启......
  • 将netcore打包好的程序,以守护进程方式部署到CentOS系统中
     进入守护进程目录:  cdetc/systemd/system创建守护进行服务:vimy-auth.service将如下代码更改为对应的服务,保存后退回[Unit]Description=Auth.NETWebAPIApprunningonCentOS[Service]WorkingDirectory=/home/authExecStart=/usr/bin/dotnet/h......
  • .NET周刊【5月第2期 2024-05-12】
    国内文章C#在工业数字孪生中的开发路线实践https://mp.weixin.qq.com/s/b_Pjt2oii0Xa_sZp_9wYWg这篇文章探讨了C#在工业数字孪生技术中的应用,介绍了三种基于C#的数字孪生系统实现方案:WPF+Unity:结合WPF技术和Unity引擎,实现客户端三维应用,提供直观的生产场景展示。前端+.N......
  • 残差网络(Residual Network)
    在VGG中,卷积网络达到了19层,在GoogLeNet中,网络史无前例的达到了22层。那么,网络的精度会随着网络的层数增多而增多吗?在深度学习中,网络层数的增多一般会伴着下面几个问题:1.计算资源的消耗2.模型容易过拟合3.梯度消失/梯度爆炸问题的产生问题1可以通过GPU集群来解决,对于一个企业资......
  • 稠密连接网络(DenseNet)
    稠密连接网络(DenseNet)是一种深度卷积神经网络,通过在网络中引入密集连接(denseconnection)来增强特征重用和梯度流动,从而提高模型的性能和泛化能力。在DenseNet中,每个层都将前面所有层的输出作为其输入,形成了一个密集的连接结构。与ResNet相比,DenseNet更加注重特征的重用和信息的共......
  • .NET使用P/Invoke来实现注册表的增、删、改、查功能
    注册表可以用来进行存储一些程序的信息,例如用户的权限、或者某些值等,可以根据个人需要进行存储和删减。当前注册表主目录:引用包 Wesky.Net.OpenTools1.0.5或者以上版本 操作演示:创建注册表项设置注册表值读取注册表值删除注册表值删除注册表项操作演示代码IR......
  • Netgear无线路由器漏洞复现(CVE-2019-20760)
    漏洞概述漏洞服务: uhttpd漏洞类型: 远程命令执行影响范围: 1.0.4.26之前的NETGEARR9000设备会受到身份验证绕过的影响解决建议: 更新版本漏洞复现操作环境: ubuntu:22.04qemu-version: 8.1.1仿真环境wgethttps://www.downloads.netgear.com/files/GDC/R9000/R9000-V1.......
  • 使用ZXing.Net生成二维码
    所需依赖组件从工程安装的ZXing.NetNuget包查看,ZXing.Net不依赖其他组件。查看package包内容,发现内部就zxing.dll和zxing.presentation.dll两个动态库文件。ZXing.Net生成的二维码形式生成的二维码形式为内存Bitmap图像对象,如果需保存为文件或Base64字符串需另外书写代码实......
  • 探究——C# .net 代码混淆/加壳
    背景:保密。过程:先查询一下常见的加壳工具:DotFuscator,官方自带,据说免费版混淆程度不高ConfuserEx,只支持.NETFramework2.0/3.0/3.5/4.0/4.5/4.6/4.7/4.8,不支持.NETCoreVirboxProtector,很好很优秀,但是收费NETReactor,最新6.9版收费,PJ版到4.9不支持.NETCoreObfu......
  • java.net.SocketException: Connection reset
    今天在学习socket编程的时候遇到了一个bug:java.net.SocketException:Connectionreset先来看一下自己的代码:服务端:publicclassServerSocketDemo{publicstaticvoidmain(String[]args){try{//建立一个ServerSocketServerS......