Tre*_*ott 12 c# serialization designer visual-studio browsable
我有一个带有公共属性的UserControl,使用以下属性:
[Browsable(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
Run Code Online (Sandbox Code Playgroud)
我尝试删除所有者表单,在Visual Studio 2010中重新创建一个新表单,并将此UserControl添加到表单.它在Designer文件中不断添加如下行:
this.vMyUserControl.MyProperty = ((MyNamespace.MyClass)(resources.GetObject("vMyUserControl.MyProperty")));
Run Code Online (Sandbox Code Playgroud)
这会导致我的应用程序崩溃,因为此属性不是由序列化创建的.
Dav*_*wen 11
仅在设计时读取属性将阻止它被序列化为resx文件.奇怪的是,如果MyType恰好是一个集合,设计者会忽略只读,你仍然可以在设计时设置属性,即使该属性没有写入resx,所以最好使该属性也不可浏览.
[ReadOnly(true)]
[Browsable(false)]
public MyType MyProperty
{
get { return _MyProperty; }
set { _MyProperty = value; }
}
Run Code Online (Sandbox Code Playgroud)
我没能找到真正的解决方案,而是找到了解决方法......
我必须进入 Form.resx 文件并找到它反序列化到我的公共财产中的数据/值密钥对。我手动删除了 XML 对内容,然后就可以运行该应用程序了。
这使得我的应用程序能够毫无错误地构建和运行。我尝试的其他所有方法(包括删除我的 UserControl 的容器表单并重复重新创建它)都不起作用。
归档时间: |
|
查看次数: |
9174 次 |
最近记录: |