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)
                {
                }
            }
    

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

  • 相关阅读:
    了解Django之前
    jQuery
    java模板模式项目中使用--封装一个http请求工具类
    spring boot项目配置RestTemplate超时时长
    TortoiseSVN-1.7.12.24070-x64-svn-1.7.9安装包和汉化包
    ubuntu16.04环境下在docker上部署javaweb项目简单案例
    工厂模式
    面向对象第四次博客
    面向对象第三次作业总结
    oo第二次博客
  • 原文地址:https://www.cnblogs.com/imes/p/9887429.html
Copyright © 2011-2022 走看看