我看过很多关于这个主题的主题,但我的问题是不同的。我有一个win窗体,上面有一个DataGrid视图。我把DataGrid视图的选择模式设置为FullRowSelection,因为我需要知道我在那个gridview中的位置。我用键盘箭头键在那个gridview中移动现在我想用箭头键在网格视图上移动时改变当前单元格的背景颜色。在这张图片中,你可以理解我的意思。
我检查了GridView CurrentCellChanged事件,但不理解它。
mklgxw1f1#
由于您似乎希望在SelectionMode设置为FullRowSelect时对DataGridView的CurrentCell进行着色,因此可以处理CellPainting事件,并在Cell为CurrentCell时,将e.CellStyle成员设置为在您的上下文中有意义的任何颜色组合。e.CellStyle值是 transient 的,除非另有说明,否则当使用默认值再次绘制单元格时,它会重置。
SelectionMode
FullRowSelect
CurrentCell
CellPainting
e.CellStyle
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样式及其层次关系的不同方法
qlvxas9a2#
要更改可以在Form_Load上添加的行选择颜色:
dataGridView1.DefaultCellStyle.SelectionBackColor = Color.Red;
随便问。
2条答案
按热度按时间mklgxw1f1#
由于您似乎希望在
SelectionMode
设置为FullRowSelect
时对DataGridView的CurrentCell
进行着色,因此可以处理CellPainting
事件,并在Cell为CurrentCell
时,将e.CellStyle
成员设置为在您的上下文中有意义的任何颜色组合。e.CellStyle
值是 transient 的,除非另有说明,否则当使用默认值再次绘制单元格时,它会重置。你可能想在这里阅读注解:
Why are my DataGridView columns not colorizing as they should?
有关设置DataGridView样式及其层次关系的不同方法
qlvxas9a2#
要更改可以在Form_Load上添加的行选择颜色:
随便问。