我有一个具有公共属性的用户控件,该控件使用以下属性:

[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

我已尝试删除所有者窗体,在visual studio 2010中重新创建一个新窗体,并将此用户控件添加到窗体中。它不断在设计器文件中添加如下行:
this.vMyUserControl.MyProperty = ((MyNamespace.MyClass)(resources.GetObject("vMyUserControl.MyProperty")));

这会使我的应用程序崩溃,因为此属性不是通过序列化创建的。

最佳答案

在设计时将属性设置为只读将防止将其序列化到resx文件中。奇怪的是,如果MyType恰好是一个集合,则只读是被设计者忽略的,并且即使设计属性没有写入RESX,您仍然可以在设计时设置该属性,因此最好使该属性也不可浏览。

[ReadOnly(true)]
[Browsable(false)]
public MyType MyProperty
{
    get { return _MyProperty; }
    set { _MyProperty = value; }
}

10-02 15:08
查看更多