步骤:

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

二、在窗体中声明一个图片数组,并在窗体的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)
{
}
}

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

C# Winform 小技巧(Datagridview某一列按状态显示不同图片)的更多相关文章

  1. winform datatable 或datagridview中添加列

    DataGridViewCheckBoxColumn dg = new DataGridViewCheckBoxColumn(); dg.HeaderText = "选择"; dg ...

  2. chrome 小技巧:保持元素的hover状态

    审查元素,选中需要hover的标签 点击"Styles"菜单中的":hov",弹出 Force element state 选中相应的 :hover :acti ...

  3. css的一些小技巧。修改input样式

    在第一次正式写项目的时候,遇到了几个布局的小技巧.记录一下. 我们常常会遇到图片和文字对齐的一种样式.比如 这样的样式,我们写的时候有时候会出现不对齐的情况.我们有俩种方法 一种就是flex的布局,还 ...

  4. sql里的多行多列转一行多列小技巧

    ---恢复内容开始--- [ 今天下午接受了一个紧急小任务,是将一组比赛记录统计出来,将象棋游戏玩家的两条记录在一行里面显示,进数据库看之后是首先想到的是行转列,但是一开始就觉得不对,后来写到一半确实 ...

  5. WinForm 清空界面控件值的小技巧

    原文:WinForm 清空界面控件值的小技巧 在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值的呢?如果窗体里面控件,尤其是TextB ...

  6. Winform 中DataGridView的checkbox列,当修改checkbox状态时实时获得其状态值

    不知道大家有没有这样的经验,当点击或者取消datagridview的checkbox列时,比较难获得其状态是选中还是未选中,进而不好进行其它操作,下面就列出它的解决办法: 主要用到了DataGridV ...

  7. winform之权限判断小技巧

    每个页面都要判断用户是否登陆并且判断用户是否拥有相应的权限,,以至于每个页面都要判断Session["user"]是否为空,后期不好维护 小技巧: 因为每个页面都继承与Page类, ...

  8. C# WinForm DataGridView 给标题列增加序号及格式化某个字段

    DataGridView 给标题列增加序号 private void dataGridView1_DataBindingComplete(object sender, DataGridViewBind ...

  9. C# WinForm开发系列 - DataGridView

    1.DataGridView实现课程表 testcontrol.rar 2.DataGridView二维表头及单元格合并 DataGridView单元格合并和二维表头.rar myMultiColHe ...

随机推荐

  1. 如何设置mysql允许外网访问

    修改表,登录mysql数据库,切换到mysql数据库,使用sql语句查看"select host,user from user ;" console: >use mysql; ...

  2. How To Install Spring IDE In Eclipse

    Spring IDE is a very useful graphical user interface tool adding support for Spring Framework. In th ...

  3. Redis 字典的实现

    [Redis 字典的实现] 注意 dict 类型使用了两个指针,分别指向两个哈希表. 其中, 0 号哈希表(ht[0])是字典主要使用的哈希表, 而 1 号哈希表(ht[1])则只有在程序对 0 号哈 ...

  4. OPENSSL 生成https 客户端证书

    下面说下拿服务器证书.(前提是服务器是https,客户端认证用的时候),服务端不给的时候,我们自己去拿(不给怼他!,哈哈,开个玩笑,都会给的) openssl s_client -connect 域名 ...

  5. LeNet

    LeNet 模型特点 LeNet5诞生于1994年,由Yann LeCun提出,充分考虑图像的相关性.当时结构的特点如下: 1)每个卷积层包含三个部分:卷积(Conv).池化(ave-pooling) ...

  6. python 开发简单的聊天工具-乾颐堂

    python 太强大了,以至于它什么都可以做,哈哈,开个玩笑.但是今天要讲的真的是一个非常神奇的应用. 使用python写一个聊天工具 其实大家平时用的QQ类似的聊天工具,也是使用socket进行聊天 ...

  7. xml数据改动

    public void reXml ( string namepngname ) { XmlDocument doc = new XmlDocument(); doc.Load(_xmlpath); ...

  8. PHP(五)session和文件上传初步

  9. Spring源码解析 - ListableBeanFactory

    Extension of the {@link BeanFactory} interface to be implemented by bean factories that can enumerat ...

  10. C# Http请求接口数据的两种方式Get and Post

    面向接口编程是一种设计思想,无论用什么语言都少不了面向接口开发思想,在软件开发过程中,常常要调用接口,接下来就是介绍C#调用其它开发商提供的接口进行获取数据,http接口方式获取接口数据. Get请求 ...