程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> .NET組件編程(2) PropertyAttribute和EventAttribute

.NET組件編程(2) PropertyAttribute和EventAttribute

編輯:關於.NET

昨天晚上寫了基礎篇,有朋友說寫的太簡單,我想在這裡申明下:因為我要寫組件編程的完整系列, 所以從最簡單的開始寫起,而且園子裡有很多的朋友可能從來都沒有寫組件的經歷,在這裡希望有組件開 發經驗的朋友能多多包涵。

前一章,我們創建了最簡單的組件,今天講講Component的PropertyAttribute和EventAttribute。

EventAttribute有:

BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、 DefaultEventAttribute

PropertyAttribute有:

BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、 DefaultPropertyAttribute、DefaultValueAttribute、EditorAttribute
、DesignerSerializationVisibilityAttribute、TypeConverterAttribute、BindableAttribute、 LocalizableAttribute

在本章教程中我們主要講以上紅色的Attribute,再下章的Designer UI會講藍色的Attribute,紫色的 Attribute不作講解。

上述的Attribute簡明闡述如下:

BrowsableAttribute:在Property窗口中是否可見。

CategoryAttribute:Property或者Event所屬的哪個組。

DescriptionAttribute:Property或者Event的簡單描述。

DefaultEventAttribute:默認Event、。

DefaultPropertyAttribute:默認Property,選中組件,其Property窗口中默認選中在這個Property 上。

DefaultValueAttribute:Property的默認值,選中組件,其Event窗口中默認選中在這個Event上。

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;

namespace Components
{
    // PropertyAttribute、EventAttribute分別放在Property、Event上,並[]括起來。
    // DefaultPropertyAttribute、DefaultEventAttribute必須放在類頭上。
    [DefaultEvent("CustomerLogout")] 
    public class Customer : Component
    {
        private string _id;
        private string _sex;
        private int _age;
        private string _address;
        private DateTime _createTime;

        // 沒有CategoryAttribute、DescriptionAttribute。
        public string Id
        {
            get { return _id; }
            set { _id = value; }
        }

        // 此屬性在Customer's Details分組中,CategoryAttribute、DescriptionAttribute 也適用於Event。
        [Category("Customer's Details"), Description("Customer's Sex")]  // 可以在一 個[]裡寫兩個Attribute。
        public string Sex
        {
            get { return _sex; }
            set { _sex = value; }
        }

        [Category("Customer's Details")]
        [Description("Customer's Age"), DefaultValue(20)]
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }

        [DefaultValue("shanghai"),Category("Customer's Details")]
        public string Address
        {
            get { return _address; }
            set { _address = value; }
        }

        [Browsable(false)] // 此Property在Property窗口中不可見,BrowsableAttribute也 適用於Event。
        public DateTime CreateTime
        {
            get { return _createTime; }
            set { _createTime = value; }
        }

        public sealed class CustomerLoginEventArgs : EventArgs
        { }
        public sealed class CustomerLogoutEventArgs : EventArgs
        { }

        public delegate void CustomerLoginEventHandler(object sender, CustomerLoginEventArgs e);
        public delegate void CustomerLogoutEventHandler(object sender, CustomerLogoutEventArgs e);

        public event CustomerLoginEventHandler CustomerLogin
        {
            add { }
            remove { }
        }

        public event CustomerLogoutEventHandler CustomerLogout
        {
            add { }
            remove { }
        }
    }
}

其Property、Event窗口如下:

我原來沒有用過DefaultValueAttribute,上面代碼中的Address、Age在Customer1創建時沒有得到 DefaultValue,我會找出原因,並在下章補上,也希望知道的朋友能告之。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved