我有一个容器控件,我正在动态地为这个容器控件添加一些用户控件。
添加用户控件后,我调用了我在容器控件中定义的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
。