1
我正在致力於從System.Windows.Forms.DataGridView
派生的自定義DataGridView
。DataGridView動態選擇行顏色
在我所期望的網格中,由於它們的狀態,我的行可能具有不同的顏色,我希望當前行與其他行有點不同,並且這種區別在於突出顯示的顏色是動態的而不是靜態的。
當我選擇一排,我只是想保持該行以前的顏色,然後highligh那種顏色比較,我已經做了白衣這個代碼片段:
Color oldColor;
private void dgvMain_SelectionChanged(object sender, EventArgs e)
{
oldColor = dgvMain.CurrentRow.DefaultCellStyle.BackColor;
Color newColor = Color.FromArgb(oldColor.R < 235 ? oldColor.R + 20 : 0,
oldColor.G, oldColor.B);
dgvMain.CurrentRow.DefaultCellStyle.BackColor = newColor;
}
但我有2個問題:
- 當我選擇一行時,首先我的代碼更改行的顏色,然後選中該行,使其顏色更改爲默認選擇顏色。
- 當行失去了它的選擇(被deselcted)我無法恢復它的舊顏色 - 我有oldColor,但我不知道什麼時候
CurrentRow
改變了,我知道有些行的選擇狀態有變化,但我不知道哪一排是我上一行改變它的顏色。
是否有任何解決方法可以做到這一點?任何事件或特殊代碼?
而且,如果您知道突出顯示顏色的更好解決方案,我將非常感謝您的幫助。
你的代碼是有幫助的,它只是需要一兩件事,每一行都有它自己的顏色因國家(列之一),當行被取消,我應該重置該行的背景色爲特定的以前的顏色,而不是常見的defaultStyle。 –
@MahdiTahsildari - 只更改SelectionBackColor。該行的BackColor根本沒有被修改。所以,你不必擔心這一點。 – Junaith
是的,我錯過了:)你是對的,謝謝。 –