• C# 属性控件的应用(备忘)


    自己定义的控件属性:
    [Browsable(true),Bindable(true),Category("数据"),DefaultValue(""),Localizable(true),
            Description("Items列表项集合"), DesignerSerializationVisibility(DesignerSerializationVisibility.Content),//指定集合属性可序列化
            Editor(typeof(DropTextEditor), typeof(UITypeEditor)),
           PersistenceMode(PersistenceMode.InnerDefaultProperty)]//指定属性在服务器控件中保持为内部文本。还指示将该属性定义为元素的默认属性。只能指定一个属性为默认属性
            public DropList Items
            {
                get
                {
                    if (ViewState["_items"] == null)
                    {
                        ViewState["_items"] = new DropList();
                    }
                    return (DropList)ViewState["_items"];
                }
                set { ViewState["_items"] = value; }
            }
    //Items属性编辑器相关类
    #region Items属性编辑器

        #region DropText属性编辑器
        /// <summary>
        /// 可编辑下拉列表框的Items属性编辑器
        /// 提供一个用户界面,该界面可以在设计时编辑大多数类型(此处为DropItem)的集合。
        /// </summary>
        public class DropTextEditor : System.ComponentModel.Design.CollectionEditor
        {
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="type"></param>
            public DropTextEditor(Type type)
                : base(type)
            {
            }

            /// <summary>
            /// 指示是否可一次选择多个集合项
            /// </summary>
            /// <returns>如果可以同时选择多个集合成员,则为 true;否则,为 false。此处默认情况返回 false</returns>
            protected override bool CanSelectMultipleInstances()
            {
                return false;
            }
            /// <summary>
            /// 获取此集合需包含的数据类型
            /// </summary>
            /// <returns>类型:System.Type(此 Type 指示集合需包含的数据类型。)</returns>
            protected override Type CreateCollectionItemType()
            {
                return typeof(DropItem);
            }
        }
        #endregion

        #region DropItem类
        /// <summary>
        /// 可编辑下拉列表框的Items属性类
        /// </summary>
        [TypeConverter(typeof(ExpandableObjectConverter))]
        [Serializable]//将DropItem类指示为可以序列化
        public class DropItem
        {
            /// <summary>
            /// 构造函数
            /// </summary>
            public DropItem()
            {
            }
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="str_Text">文本内容</param>
            /// <param name="str_Value">文本值</param>
            public DropItem(string str_Text,string str_Value)
            {
                Text = str_Text;
                Value = str_Value;
            }
            private string text;
            private string _value;
            /// <summary>
            /// 文本
            /// </summary>
            public string Text
            {
                get { return text; }
                set { text = value; if (string.IsNullOrEmpty(Value)) { Value = value; } }
            }
            /// <summary>
            /// 文本所对应值
            /// </summary>
            public string Value
            {
                get { return _value; }
                set { _value = value; if (string.IsNullOrEmpty(Text)) { Text = value; } }
            }
        }
        #endregion

        #region DropList类,继承自ArrayList
        /// <summary>
        /// 下拉列表框Items属性的基类继承自System.Collections.ArrayList
        /// </summary>
        [Serializable]
        public class DropList : ArrayList
        {
            /// <summary>
            /// 将DropItem添加到DropList结尾处
            /// </summary>
            /// <param name="value"></param>
            /// <returns></returns>
            public int Add(DropItem value)
            {
                return base.Add(value);
            }
        }
        #endregion

        #endregion

  • 相关阅读:
    程序自动更新版本
    [.NET] Rough Dependency Injection
    Python标准库存储对象(pickle包,cPickle包)
    发送邮件,支持群发
    css3传送带示例
    “计算机之子”的MVVM框架源码学习笔记
    Windows 8 应用商店正式面向全部开发者开放
    MVVM框架 v1发布
    Python学习索引
    注册 windows 8 开发者账号
  • 原文地址:https://www.cnblogs.com/qiyecao/p/4266805.html
Copyright © 2020-2023  润新知