我创建了继承UserControl的SubCtrl。它没有代码。
然后,我创建了Ctrl,它也继承了UserControl。它具有一个SubCtrl,并且唯一的代码意味着将其公开公开,因此它出现在Ctrl的属性列表中:
public subctrl.SubCtrl SUBCTRL
{
get { return this.subCtrl1; }
}
然后,我创建了一个简单的Form项目,其中仅包含Ctrl,没有代码。
如我所愿,SUBCTRL出现在Ctrl的属性列表中,因此我可以进行更改。我更改了背景颜色(例如,更改为红色),而子控件在设计器中变为红色。
但神奇的是,当我运行该项目时,它又变回标准的灰色。似乎在Form1.Designer.cs中没有生成任何代码来将SUBCTRL的底色更改为红色。如果我用手写方式,它可以工作,但这不是我想要的。显然,它应该是自动的。
另一方面,Ctrl的行为正常。生成了代码,一切都愉快地进行了。
子控件有什么问题?
最佳答案
将[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
添加到属性。
关于c# - Designer不会为子控件的属性生成代码。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3701142/