步骤:数组
1、导入状态图片到项目中:orm
2、在窗体中声明一个图片数组,并在窗体的OnLoad事件中加入图片资源:blog
/// <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 };ip
}资源
3、处理Datgridview的格式化事件:string
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) { } }
这样,你就能获得一个没有闪烁的状态图片列了。it