比較C#自定義控件的property(屬性)和attribute(性質)
這兩天,在用c#自定義控件,.net他提供給我們的屬性窗口非常好用,我們可以不用寫代碼就可以改變屬性,那么如果我們自定義的控件,可不可以在屬性欄里直接改變它呢?
沒錯,是可以的。.net已經為我們想好了(他們在開發的過程中也是這么用的)。
首先舉個例子,我們要給自己定義的控件加一個字符串屬性(如果對屬性不懂的朋友,先去了解下什么是屬性)
- private string mytext
- public string Mytext
- {
- get
- {
- return this.mytext;
- }
- set
- {
- this.mytext = value;
- }
- }
這樣,我們就可以在程序中去獲取或改變Mytext屬性了,但是,我們現在的這個屬性,在vs開發環境中的屬性欄里看不到,為什么呢,因為我們還缺少點東西。如果我們在屬性的前面加點東西,就可以了。
就像這樣使用C#自定義控件
- private string mytext
- [Browsable(true)]//指定是否在屬性欄可見
- [DesignerSerializationVisibility(DesignerSerializationVisibility .Visible )]//指定屬性對設計時序列化程序所具有的可見性。
- public string Mytext
- {
- get
- {
- return this.mytext;
- }
- set
- {
- this.mytext = value;
- }
- }
這樣再試試,我們就發現,在屬性欄里可以對其進行設置了。
其它還有很多這種屬性,如果有興趣,可以關注下System.ComponentModel命名空間
里面的類只要是Attribute結尾的,都是可以用到的屬性,貌似有好多,這里就不一一列舉了。
System.ComponentModel 命名空間提供用于實現組件和控件運行時和設計時行為的類。此命名空間包括用于實現屬性和類型轉換器、綁定到數據源以及授權組件的基類和接口。
該命名空間中的類分為以下類別:
核心組件類。請參見 Component、IComponent、Container 和 IContainer 類。
組件授權。請參見 License、LicenseManager、LicenseProvider 和 LicenseProviderAttribute 類。
屬性。請參見 Attribute 類。
說明符和持久性。請參見 TypeDescriptor、EventDescriptor 和 PropertyDescriptor 類。
類型轉換器。請參見 TypeConverter 類。
以上就是C#自定義控件property和attribute不同的介紹。
【編輯推薦】