winforms 如何更改当前DataGridView单元格背景颜色?

xtupzzrd  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(211)

我看过很多关于这个主题的主题,但我的问题是不同的。
我有一个win窗体,上面有一个DataGrid视图。我把DataGrid视图的选择模式设置为FullRowSelection,因为我需要知道我在那个gridview中的位置。我用键盘箭头键在那个gridview中移动现在我想用箭头键在网格视图上移动时改变当前单元格的背景颜色。
在这张图片中,你可以理解我的意思。

我检查了GridView CurrentCellChanged事件,但不理解它。

mklgxw1f

mklgxw1f1#

由于您似乎希望在SelectionMode设置为FullRowSelect时对DataGridView的CurrentCell进行着色,因此可以处理CellPainting事件,并在Cell为CurrentCell时,将e.CellStyle成员设置为在您的上下文中有意义的任何颜色组合。
e.CellStyle值是 transient 的,除非另有说明,否则当使用默认值再次绘制单元格时,它会重置。

private void someDataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    if (e.ColumnIndex < 0 || e.RowIndex < 0) return;
    var dgv = (sender as DataGridView);
    var cell = dgv[e.ColumnIndex, e.RowIndex];
    if (dgv.SelectionMode != DataGridViewSelectionMode.CellSelect && cell == dgv.CurrentCell) {
        // Set any color combination you prefer
        e.CellStyle.SelectionForeColor = Color.White;
        e.CellStyle.SelectionBackColor = Color.Red;
    }
}

你可能想在这里阅读注解:
Why are my DataGridView columns not colorizing as they should?
有关设置DataGridView样式及其层次关系的不同方法

qlvxas9a

qlvxas9a2#

要更改可以在Form_Load上添加的行选择颜色:

dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red;

随便问。

相关问题