庖丁解牛ASP.NET3.5控件和组件开发技术-(4)服务器控件属性

来源:互联网 发布:淘宝如何增加排名 编辑:程序博客网 时间:2024/06/06 12:54

 

  1. 属性,方法和事件是控件使用者和控件交互的接口:包含系统属性和自定义属性。
  2. 简单属性
  3.         [Description("简单属性")]     

            [Category("简单属性")]       

            public string Value

            {

                get

                {

                    String s = (String)ViewState["Value"];

                    return ((s == null) ? String.Empty : s);

                }

     

                set

                {

                    ViewState["Value"] = value;

                }

            }

    另外简单属性可以直接使用ViewState存储其值,因为简单属性可以直接映射字符串,而ViewState直接接受的格式也是字符串。

  4. 属性设计特性(查书)
  5. 复杂属性
  6. 连字符形式的复杂属性标记
  7.       private Person pPerson=null;

            [Description("复杂属性--连字符形式")]

            [Category("复杂属性")]   

            [PersistenceMode(PersistenceMode.Attribute)]

            [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]   //避免复杂属性和子属性值都放在一个框中。  

            public Person Person

            {

                get

                {

                    if (pPerson == null)

                    {

                        pPerson = new Person();

                    }

                    return pPerson;

                }           

            }

     Person-Age="28" Person-Name="King Zheng"

    PersistenceMode 特性表示在文件中如何保持复杂属性

    PersistenceMode.Attribute 作为控件的属性

    PersistenceMode.InnerPropery:作为嵌套标签表示复杂属性

    PersistenceMode.InnerDefaultProperty:一般用于常用的活重要复杂属性或集合。

    PersistenceMode.EncodeInnerDefaultProperty:InnerDefaultProperty有点区别,其内容进行HTML编码

    DesignerSerializtionVisibility:在设计时序列化复杂对象方式

    DesignerSerializtionVisibility.Visible 对属性本身生成代码

    DesignerSerializtionVisibility.Hidden:不对属性生成代码

    DesignerSerializtionVisibility.Visibility.Contend生成复杂属性内容的代码,而不是其本身。

  8. 内部嵌套复杂属性标记
  9.  private RowStyle rsRowStyle;

            [PersistenceMode(PersistenceMode.InnerProperty)]

            [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

            [NotifyParentProperty(true)]

            [Category("复杂属性")]

            [Description("复杂属性--内部嵌套形式")]

            public RowStyle RowStyle

            {

                get

                {

                    if (rsRowStyle == null)

                    {

                        rsRowStyle = new RowStyle();

                    }

                    return rsRowStyle;

                } 

            }     

  10. 内部嵌套默认复杂属性标记:
  11.         private Items items;

            [PersistenceMode(PersistenceMode.InnerDefaultProperty)]

            [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]

            [NotifyParentProperty(true)]

            [TypeConverter(typeof(CollectionConverter))]

            [Category("复杂属性")]

            [Description("复杂属性--内部默认嵌套形式")]

            public Items Items

            {

                get

                {

                    if (this.items == null)

                    {

                        this.items = new Items();

                    }

                    return this.items;

                }

            }

  12. 内部嵌套编码默认属性
  13.         /// <summary>

            /// 文本属性

            /// </summary>    

            [NotifyParentProperty(true)]

            [PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]        

            [Description("复杂属性--内部默认嵌套形式")]

            public string Text

            {

                get { return _Text; }

                set { _Text = value; }

            }

  14. 使用AddParsedSubObject控制复杂属性的内容
  15. 使用ControlBuilder解析复杂内容
  16. 属性编辑器(查书)定制自己的属性编辑器 窗体--》UITypeEditor -Control
  17. 类型转换器可以用于在数据类型之间转换,并通过提供文本到值的转换或待选值的下拉列表来帮助在设计时配置属性。
  18. 自定义类型转换器继承自TypeConverter,需要OVerride其方法

  19. 自定义属性
  20.  

原创粉丝点击