DesignerSerializationVisibility:
自定义控件时,在属性中设置DesignerSerializationVisibility为Hidden,可以保持组件设计时的值,不在拖拽组件时InitializeComponent()方法中再重新生成。
MSDN中的详细介绍:
名称 | 说明 | |
---|---|---|
Content | 指定序列化程序应该序列化属性的内容,而不是属性本身。 此字段为只读。 | |
Default | 指定默认值为 Visible,也就是说,可视化设计器使用默认规则来生成属性值。 此 static 字段是只读的。 | |
Hidden | 指定序列化程序不应该序列化属性的值。 此 static 字段是只读的。 | |
Visible | 指定应该允许序列化程序序列化属性的值。 此 static 字段是只读的。 |
当序列化程序保持设计模式文档的可持续状态时,它通常会向组件的初始化方法中添加代码,以便保持已在设计时设置的属性值。 如果尚未设置指示其他行为的特性,大多数基类型都会默认出现此情况。
DesignerSerializationVisibilityAttribute 允许您指示属性值是否为 Visible 而应在初始化代码中保持,是否为 Hidden 而不应在初始化代码中保持,或者是否由 Content 组成而应为分配给该属性的对象的每个公共属性(而非隐藏属性)生成初始化代码。
没有 DesignerSerializationVisibilityAttribute 的成员将被视为具有值为 Visible 的 DesignerSerializationVisibilityAttribute。 如果可能,序列化程序会将标记为 Visible 的属性值序列化为该类型。
Browsable(false):
指定一个属性 (Property) 或事件是否应显示在“属性”窗口中。
Category: 控件中时,用于给属性或事件分组的类别的名称。
例:
/// <summary>
/// 允许用户输入文字,当做控件的值
/// </summary>
[Category("M")]
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public bool AllowUseText
{
get { return allowUseText; }
set
{
this.allowUseText = value;
}
}
以上都来自命名空间:System.ComponentModel