【问题标题】:Colouring cells not working unless DGV visible除非 DGV 可见,否则着色单元不起作用
【发布时间】:2012-11-28 23:29:20
【问题描述】:

我有一个 TabControl,它在单独的选项卡上包含 2 个 DataGridView。这两个都是根据第三个 DGV 上选定行的值填充的,它位于 TabControl 之外。

我正在尝试将其中一个 DGV 的左侧列着色为蓝色,如果包含该 DGV 的页面当前可见,则它可以正常工作。如果当前不可见,则颜色不会更改。我用来改变单元格颜色的代码是

foreach (DataGridViewRow row in this.dgvInformation.Rows)
{
    DataGridViewCellStyle blueStyle = new DataGridViewCellStyle();
    blueStyle.Font = new Font("Microsoft Sans Serif", 8.25F, FontStyle.Regular);
    blueStyle.BackColor = Color.LightBlue;
    row.Cells["InfoType"].Style = blueStyle;
}

我已单步执行代码,无论 DGV 是否可见,它都采用相同的路径,但单元格颜色仅在可见时才会更改。

如果 DGV 当前未显示,是否有无法更改其单元格颜色的原因?

非常感谢

【问题讨论】:

  • 我想我不久前遇到了一些麻烦。当您移动到该选项卡时,您可能需要重新为单元格着色。不过,我会慢慢思考是否有更好的解决方案。就像你在着色后对细胞进行排序一样,我相信它们会回到标准。
  • 谢谢。我没有注意到排序的东西,但是是的,它也重置了颜色!
  • 您可能必须使用事件处理程序在某些事件之后重新着色,例如变得可见或排序。我做了一个正确的噩梦,我认为这是一项简单的任务
  • 干杯,我会接受这个建议

标签: c# datagridview


【解决方案1】:

[抱歉在这里回答我自己的问题 - 功劳属于 Shane C 我只是不想留下未回答的问题!]

解决方法是将单元格着色代码添加到 DataGridView 的 VisibleChanged 事件中,如果允许排序,也添加到 Sorted 事件中

【讨论】:

    猜你喜欢
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多