【发布时间】:2014-04-09 02:08:17
【问题描述】:
我正在处理从System.Windows.Forms.DataGridView 派生的自定义DataGridView。
在我想要的网格中,我的行可能由于它们的状态而具有不同的颜色,我希望当前行与其他行略有不同,并且这种差异在于突出显示的颜色是动态的而不是静态的。
当我选择一行时,我只是想保留该行的先前颜色,然后相对地突出显示该颜色,我已经用这段代码 sn-p:
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;
}
但我有两个问题:
- 当我选择一行时,首先我的代码会更改该行的颜色,然后该行被选中,因此其颜色会更改为默认选择颜色。
- 当行失去选择(被取消选择)时,我无法恢复它的旧颜色 - 我有 oldColor 但我不知道
CurrentRow何时更改,我知道某些行的选择状态发生了变化,但我不知道哪一行是我要更改颜色的上一行。
是否有任何解决方法可以做到这一点?任何事件或特殊代码?
如果您知道突出颜色的更好解决方案,我将非常感谢您的帮助。
【问题讨论】:
标签: c# .net winforms datagridview colors