我有下一个问题: TabControl有三个TabPages。每个TabPage都有自己的DataGridView。在“Enter”事件中,某些行会更改其背景颜色。 当表单开始初始化时,将调用更改颜色的函数。但DataGridView行具有默认背景(背景颜色尚未更改)。如果我单击另一个TabPage然后返回到第一个TabPage,则再次调用该函数并更改背景。那么,为什么它不会在初始化阶段第一次发生(函数被调用,但行不会改变它们的颜色)。如何在初始化阶段强制DataGridView更改其行的背景颜色? 非常感谢!
答案 0 :(得分:1)
你是如何改变颜色的?您可能希望查看CellFormatting事件,以查看在用户可见时是否可以显式绘制单元格。这样每次重绘单元格时都可以保证颜色正确。 (假设您需要不同的行颜色,否则只需设置单元格样式并使控件无效。
更新:
通过事件参数引用cellstyle非常重要,否则您将进行递归以计算出您尝试访问的单元格样式。
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
e.CellStyle.BackColor = Color.PaleGreen
}
答案 1 :(得分:1)
我在使用DataGridViewCellStyle
时遇到同样的问题,TabControl
似乎存在一个错误,当它有多个标签,cellstyles
时会被创建代码仅适用于第一个标签的DataGridView ,因此您可以将DataGridView
移至第一个标签,也可以使用TabControl {{1} } event并将你的样式代码放在这个事件中。
答案 2 :(得分:0)
我知道这是一个较老的问题,但我遇到了类似的问题,并且很难找到答案。我最终自己搞清楚了。我的DGV在选项卡控件上,所以我所要做的就是在应用颜色更改之前选择我的选项卡:
this.tabControl1.SelectedTab = tabPage2;