我创建了继承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/

10-08 23:14