Designer不会为子控件的属性生成代码。为什么?

时间:2010-09-13 14:02:17

标签: c# user-controls windows-forms-designer

我创建了继承UserControl的SubCtrl。它没有代码。 然后我创建了Ctrl,它也继承了UserControl。它有一个SubCtrl,它唯一的代码意味着公开它,所以它出现在Ctrl的属性列表中:

public subctrl.SubCtrl SUBCTRL
{
    get { return this.subCtrl1; }
}

然后我创建了一个简单的Form项目,其中只有一个Ctrl而没有代码。 如我所愿,SUBCTRL出现在Ctrl的属性列表中,所以我可以改变一些事情。我更改了背景颜色(例如,更改为红色),并且设计器中的子控件变为红色。

但神奇地说,当我运行项目时,它会变回标准灰色。似乎在Form1.Designer.cs中没有生成代码来将SUBCTRL的背面颜色更改为红色。如果我手工编写,它可以工作,但这不是我想要的。它显然应该是自动的。

另一方面,Ctrl表现正常。生成代码,一切都很愉快。

分控制有什么问题?

1 个答案:

答案 0 :(得分:10)

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]添加到媒体资源。