容器控制不会改变它的背景色

时间:2012-05-08 10:25:31

标签: c# winforms

我有一个容器控件,我正在动态地为这个容器控件添加一些用户控件。

添加用户控件后,我调用了我在容器控件中定义的SetColor方法。在这个方法中,我使用BackColor,容器控件的ForeColor和我添加到Container控件的一些其他颜色的用户控件。

但只有用户控件的颜色才会被更改,而不是容器控件。

表示容器控件的BackColor和ForeColor保持不变。

我试图在容器控件上调用Invalidate(),但这也不起作用。

知道问题是什么?

这是SetColor方法的代码...实际上我的容器控件是一个图表,它包含一个图形控件,yaxis控件,xaxis控件和一些其他标签控件。

public override void SetColor()
{
    BackColor = xAxisControl.BackColor = yAxisControl.BackColor = Nor150Colors.FormBackGround;
    ForeColor = xAxisControl.ForeColor = yAxisControl.ForeColor = Nor150Colors.Text;

    lblChannel.ForeColor = lblReport.ForeColor = Nor150Colors.Text;            
    lbldB1.ForeColor = lbldB2.ForeColor = lbldB3.ForeColor = ForeColor = Nor150Colors.Text;
    lblSplFunction.ForeColor = Nor150Colors.Text;

    // same color for value and label
    lblFunction1Value.ForeColor = lblFunction1.ForeColor = Nor150Colors.Text; // Function1;
    lblFunction2Value.ForeColor = lblFunction2.ForeColor = Nor150Colors.Text; // Function2;
    lblFunction3Value.ForeColor = lblFunction3.ForeColor = Nor150Colors.Text; // Function3;

    lblPeriod.ForeColor = Nor150Colors.Text;

    function1Rect.BackColor = Nor150Colors.Function1;
    function2Rect.BackColor = Nor150Colors.Function2;
    function3Rect.BackColor = Nor150Colors.Function3;

    lblFrequency.ForeColor = Nor150Colors.Text;
}  

在我将图表添加到SetColor控件后,从表单调用ViewContainer方法。

private void LocalizeView(ViewContainer viewContainer)
{
    foreach (BaseControl bc in viewContainer.Controls.OfType<BaseControl>())
    {
        bc.SetColor();               
    }
}

我的所有图表都继承自BaseControl

0 个答案:

没有答案