如何更改DataGridView行的背景颜色并在悬停时撤消?

时间:2017-12-16 17:45:46

标签: c# datagridview

我认为这是一个简单的问题,但以下代码段不起作用。如果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;
    }

1 个答案:

答案 0 :(得分:0)

使用CellMouseEnter事件代替CellMouseMove解决了问题。因为CellMouseMove会不断检查并产生问题,但我们只想在“进入并离开”时进行控制一次。