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

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

  • 相关阅读:
    fatal error C1083: 无法打开包括文件:“iostream.h”: No such file or directory
    Dan Saks
    '=' : left operand must be lvalue 左值和右值
    sizeof使用
    stream.js :一个新的JavaScript数据结构
    Kibo:键盘事件捕捉高手
    c中不能用引用的办法
    分布式版本控制工具:git与Mercurial
    非常好的BASH脚本编写教程
    Handler让主线程和子线程进行通信
  • 原文地址:https://www.cnblogs.com/imes/p/9887429.html
Copyright © 2011-2022 走看看