zoukankan      html  css  js  c++  java
  • C# Winform 小技巧(Datagridview某一列按状态显示不同图片)

    步骤:

    一、导入状态图片到项目中:

    二、在窗体中声明一个图片数组,并在窗体的OnLoad事件中加入图片资源:

    /// <summary>
    /// 存储状态图片序列,避免同一状态对图片重复读取引发闪烁。
    /// </summary>
    private Image[] StatusImgs;

    private void FrmSer_Main_Load(object sender, EventArgs e)
    {

    StatusImgs = new Image[] { Resources.TaskNA, Resources.TaskPause, Resources.TaskRun, Resources.TaskStart, Resources.TaskStop, Resources.TaskTimer };

    }

    三、处理Datgridview的格式化事件:

            private void DgvTaskList_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
            {
    
                if (DgvTaskList.Rows[e.RowIndex].IsNewRow) return;
                if (e.ColumnIndex != 0) return;
    
                string stas =OPString.NZ2Str(DgvTaskList.Rows[e.RowIndex].Cells["RunStatus"].Value);
                if (string.IsNullOrEmpty(stas)) stas = "Timer";
                try
                {
                    DataGridViewImageCell tmpCell = (DataGridViewImageCell)DgvTaskList.Rows[e.RowIndex].Cells["StatusImg"];
    
                    switch (stas)
                    {
                        case "NA":
                            tmpCell.Value = StatusImgs[0];
                            tmpCell.ToolTipText = "闲置";
                            break;
                        case "Pause":
                            tmpCell.Value = StatusImgs[1];
                            tmpCell.ToolTipText = "暂停";
                            break;
                        case "Run":
                            tmpCell.Value = StatusImgs[2];
                            tmpCell.ToolTipText = "运行中";
                            break;
                        case "Start":
                            tmpCell.Value = StatusImgs[3];
                            tmpCell.ToolTipText = "解析中";
                            break;
                        case "Stop":
                            tmpCell.Value = StatusImgs[4];
                            tmpCell.ToolTipText = "任务终止";
                            break;
                        case "Timer":
                            tmpCell.Value = StatusImgs[5];
                            tmpCell.ToolTipText = "循检中";
                            break;
                        default:
                            tmpCell.ToolTipText = "循检中";
                            break;
                    }
                }
                catch (Exception)
                {
                }
            }
    

      这样,你就能得到一个没有闪烁的状态图片列了。

  • 相关阅读:
    idea 使用jedis连接不上 redis解决办法
    EFCore 连接 MySql 间歇性报错:你的主机中的软件中止了一个已建立的连接
    初学Ansible(管理Window主机)
    茹炳晟-API自动化测试笔记
    Xpath路径
    kibana Dev Tools --常用命令
    kibana Dev Tools--修改语句示例
    kibana Dev Tools--增删改查语句
    记一次出名记录
    脚本:bat实现自动转换windows远程端口
  • 原文地址:https://www.cnblogs.com/imes/p/9887429.html
Copyright © 2011-2022 走看看