C# Winform 小技巧(Datagridview某一列按狀態顯示不一樣圖片)

步驟:數組

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

相關文章
相關標籤/搜索