我认为这是一个简单的问题,但以下代码段不起作用。如果currnet行是绿色的我希望它是浅绿色,否则我想要浅蓝色。当我MouseLeave时,颜色必须成为先前的状态。
在此代码中,无论颜色如何,它都会变为蓝色。移动鼠标时,它变为白色。它似乎在调试模式下工作正常(输入if语句)。
private void dtgVeri_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.RowIndex == -1) return;
Color colorToChange=Color.LightBlue;
Color colorCurrent = dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor;
if (colorCurrent == Color.LightGreen)
colorToChange = Color.PaleGreen;
dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor = colorToChange;
}
private void dtgVeri_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex == -1) return;
Color colorToChange = Color.White;
Color colorCurrent = dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor;
if (colorCurrent == Color.PaleGreen)
colorToChange = Color.LightGreen;
dtgVeri.Rows[e.RowIndex].DefaultCellStyle.BackColor = colorToChange;
}
答案 0 :(得分:0)
使用CellMouseEnter
事件代替CellMouseMove
解决了问题。因为CellMouseMove
会不断检查并产生问题,但我们只想在“进入并离开”时进行控制一次。