C# DataGridViewCellStyle.ForeColor未按预期工作

C# DataGridViewCellStyle.ForeColor未按预期工作,c#,winforms,datagridview,C#,Winforms,Datagridview,我是我的WinForms 2.0应用程序,在当前单元格中使用DataGridView和自定义编辑控件(IDataGridViewEditingControl) 当前单元格使用从textbox继承的自定义编辑控件,并实现IDataGridViewEditingControl接口。此控件现在注册到TextChanged事件,以便在编辑值时执行一些验证逻辑,并注册到Leave事件,以便将自定义编辑控件的一些视觉效果应用到DataGridView单元格 代码看起来有点像这样: public class

我是我的WinForms 2.0应用程序,在当前单元格中使用DataGridView和自定义编辑控件(IDataGridViewEditingControl)

当前单元格使用从textbox继承的自定义编辑控件,并实现IDataGridViewEditingControl接口。此控件现在注册到TextChanged事件,以便在编辑值时执行一些验证逻辑,并注册到Leave事件,以便将自定义编辑控件的一些视觉效果应用到DataGridView单元格

代码看起来有点像这样:

public class CustomerTextEditingControl : CustomerTextBox, IDataGridViewEditingControl
{
    ...
    protected override void OnLeave(object sender, EventArgs e)
    {
        dataGridView[_col, _row].Style.BackColor = BackgroundColor;
        dataGridView[_col, _row].Style.ForeColor = ForegroundColor;
        ...
    }
    ...
}
现在我的问题是:尽管单元格的背景以任何颜色BackgroundColor正确渲染,但文本本身始终以黑色渲染,而不管ForeggroundColor是什么颜色。首先,我认为可能有另一种风格适用于单元格的内容,但我在那里找不到任何东西。所以我现在很困惑:-)

非常感谢您的帮助

谢谢
Marc发现了问题:DataGridView类被子类化,OnPaintCell方法被重写。唯一考虑的样式属性是BackColor…

发现了问题:DataGridView类被子类化,OnPaintCell方法被重写。考虑的唯一样式属性是BackColor…

如果在其中设置断点,是否可以看到前景色实际上已分配给样式?是的,已执行分配,这意味着在事件链的稍后点,其他内容将覆盖前景色。你能发布一个复制bahavior的极简代码,这样我就可以在我这边进行测试吗?如果你在那里设置了一个断点,你能看到前景色是否真的被分配给了样式吗?是的,分配被执行了,那么这意味着在事件链的后面某个点,其他的东西会覆盖前景色。你能发布一个复制bahavior的极简代码,这样我就可以在我这边进行测试了吗?