Fro*_*840 3 .net properties windows-forms-designer
我有一个Windows.Forms组件,它具有一个返回Size结构的"mySize"属性.我的目的是让这个属性根据组件的大小自动计算返回的mySize,除非mySize已被明确设置,在这种情况下,返回mySize的设置值.不幸的是,现在我将组件嵌入到表单中,Windows窗体设计器决定开始为mySize属性显式生成和设置一个值,这让我搞砸了.
所以我需要设置一个DefaultValue,这样Designer就会消失,让我一个人呆着.
我已经阅读了处理System.ComponentModel.DefaultValue的答案,所以我知道我必须在构造函数中手动设置属性的值,但我发现的答案和文档只处理设置DefaultValue为False,不变.
Size结构不是一个常量,所以VB编译器吓坏了,告诉我我不能将Size设置为Type Size属性的DefaultValue,因为Sizes不是常量.
这让我的大脑受伤.
我可以通过使用getMySize和setMySize方法而不是使用属性来解决问题,但我想知道是否有任何方法可以为Size设置默认属性.
注意:我没有使用mySize作为某种疯狂的尝试来覆盖Size属性(其DefaultValue为150x150,因此SOMETHING似乎能够为Sizes设置DefaultValues); mySize只是Class所需的一些Size值.
不要应用DefaultValue属性,而是编写以下两种方法:
bool ShouldSerializemySize() { ... }
void ResetmySize() { ... }
Run Code Online (Sandbox Code Playgroud)
在ShouldSerializemySize中,如果值应序列化为代码,则返回true.在ResetmySize中,将属性重置为其默认值.
组件设计者将通过反射自动获取这些方法.
更多信息:http: //msdn.microsoft.com/en-us/library/53b8022e(VS.71).aspx