C# 屬性控制項的應用(備忘)

來源:互聯網
上載者:User

標籤:

自己定義的控制項屬性:
[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

C# 屬性控制項的應用(備忘)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.