Datagridview控件的forecolor仅在事件处理程序运行并且单击另一个单元格后才会更改

时间:2012-01-06 18:13:39

标签: .net winforms datagridview

我想在双击单元格时更改数据网格视图中单元格的颜色。我添加了一个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但这不起作用。

1 个答案:

答案 0 :(得分:4)

这是因为当您双击一个单元格时,它会保持选中状态,并使用属性.SelectionForeColor和.SelectionBackColor。只有当您单击另一个单元格时,它才会被取消选择并开始使用.ForeColor和.BackColor。您可以通过更改.SelectionForeColor属性或立即设置.Selected = False立即更新它。

相关问题