Csharp/C#教程:使Visual Studio设计器忽略公共属性分享


使Visual Studio设计器忽略公共属性

我有一个带有公共属性的UserControl,使用以下属性:

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

我尝试删除所有者表单,在Visual Studio 2010中重新创建一个新表单,并将此UserControl添加到表单。 它不断在Designer文件中添加如下行:

 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; } } 

使用[DesignerSerializationVisibilityAttribute ( Visibility = Hidden )]

MSDN文章

尝试使用具有属性的访问器方法的私有字段以及[field:NonSerialized]属性:

 [field: NonSerialized] private MyType _MyProperty; [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public MyType MyProperty { get { return _MyProperty; } set { _MyProperty = value; } } 

我没有找到真正的解决方案,而是一种解决方法……

我不得不进入Form.resx文件并找到它反序列化到我的公共属性中的数据/值键对。 我手动删除了XML对内容,然后我就能运行该应用程序了。

这使我的应用程序可以无错误地构建和运行。 我尝试的其他所有内容(包括删除UserControl的容器表单并重复创建它)都不起作用。

上述就是C#学习教程:使Visual Studio设计器忽略公共属性分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1020948.html

(0)
上一篇 2022年1月5日
下一篇 2022年1月5日

精彩推荐