在一個簡單的.NET WinForm中,我有一個datagridview
,它基於單元格的值進行顏色繪製。該代碼正在工作,但呈現的形式是「不穩定的」(當計算機不斷需要重繪並且無法跟上時,這看起來是如此)。我想知道是否有什麼我可以做的,以消除這一點,或者如果我的代碼有問題。建議感激。在.NET 4.5應用程序中導致呈現抖動的CellFormatting事件
private void gvPhoneQueue_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
if (gvPhoneQueue.Columns[e.ColumnIndex].HeaderText == "CallsWaiting")
{
string convertedVal = e.Value.ToString();
if (Convert.ToInt32(convertedVal) > _greenTolerance)
{
gvPhoneQueue.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Green;
}
if (Convert.ToInt32(convertedVal) > _yellowTolerance)
{
gvPhoneQueue.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Yellow;
}
if (Convert.ToInt32(convertedVal) > _redTolerance)
{
gvPhoneQueue.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
}
}
}
catch (System.Exception ex)
{
LogEvent("Error" _+ ex);
}
}
感謝,優化的事情做的伎倆。紅色,然後是黃色,然後是綠色是訣竅。令人驚訝的是,雖然我認爲你是在編寫代碼,轉換速度可能在減慢,但單次轉換並沒有加快速度。另外 - 你可以在C#中執行「else if」。 – Darkenor
@Darkenor很高興它有幫助。關於單一轉換,也許我錯了,但我認爲通過第一次優化獲得的性能增益在這裏,但與其他優化獲得的性能增益相比微不足道,因爲我認爲代碼的一部分對資源更爲合理很可能是對「if」陳述的系統評價。感謝Else If的精確度。你是對的,似乎我誤解了一個主題。 C#中的else if等於VB中的ElseIf。我會編輯我的答案。 – Chris