步驟:
一、導入狀態圖片到項目中:
二、在窗體中聲明一個圖片數組,並在窗體的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) { } }
這樣,你就能得到一個沒有閃爍的狀態圖片列了。