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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更改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;
    }
答案

使用CellMouseEnter事件而不是CellMouseMove解决了问题。因为CellMouseMove不断检查并产生问题,但我们只想在Enter和Leave时盘旋一次。

以上是关于如何更改DataGridView行的背景颜色并在悬停时撤消?的主要内容,如果未能解决你的问题,请参考以下文章

更改DataGridView行的颜色

选中复选框后如何更改datagridview中的行颜色

C#DataGridView修改行头字体颜色与背景颜色

如何根据条件更改 DataGridView 的行颜色以检查日期是不是过期

急急急!!!winform里怎么做可以使datagridview里的鼠标点击cell使整行的背景颜色改变?

DataGridView透明行选择和双击背景颜色更改