我有一个DataGridView,每一行的背景颜色都取决于数据绑定项。但是,当我选择一行时,就看不到它原来的背景颜色了。
为了解决这个问题,我想到了两个解决方案:
我可以使所选内容半透明,这样就能看到两个选定的行是否具有不同的背景颜色。
或者,我可以完全删除所选颜色,并在所选行周围画一个边框。
哪种选项更容易实现?如何做到这一点?
这是一个WinForm应用程序。
编辑:最终我使用了你的代码,adrift。
private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (dgv.Rows[e.RowIndex].Selected)
{
var row = dgv.Rows[e.RowIndex];
var bgColor = row.DefaultCellStyle.BackColor;
row.DefaultCellStyle.SelectionBackColor = Color.FromArgb(bgColor.R * 5 / 6, bgColor.G * 5 / 6, bgColor.B * 5 / 6);
}
}
这给人半透明选中颜色的印象。感谢您的帮助!