我想在双击单元格时更改数据网格视图中单元格的颜色。我添加了一个CellDoubleClick处理程序,在双击单元格后正常触发:
Private Sub myDataGridView_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles myDataGridView.CellDoubleClick
myDataGridView.Rows(e.RowIndex).Cells(e.ColumnIndex).Style.ForeColor = Color.Red
myDataGridView.Refresh() 'I added this to try to fix the problem
Application.DoEvents() 'I added this to try to fix the problem
end sub
但事件'触发'后,UI不会立即改变单元格文本的颜色。相反,如果我单击不同的单元格,则Visual Studio 2010会将原始单元格更改为红色(就像处理程序所说的那样)。
每次单击不同的单元格时,似乎都会进行某种UI刷新/ UI重新绘制。它是否正确?有没有办法以编程方式刷新UI。许多stackoverflow帖子建议使用.refresh但这不起作用。
答案 0 :(得分:4)
这是因为当您双击一个单元格时,它会保持选中状态,并使用属性.SelectionForeColor和.SelectionBackColor。只有当您单击另一个单元格时,它才会被取消选择并开始使用.ForeColor和.BackColor。您可以通过更改.SelectionForeColor属性或立即设置.Selected = False立即更新它。