c#如何自定義控制項的屬性呢?我今天嘗試去自定義控制項屬性。
設計自訂屬性的過程十分簡單,在設計屬性前只需要考慮以下幾個方面:
屬性可以以很多方式使用。你需要定義屬性到底要完成什麼功能並確保這些特定功能沒有內建在.NET框架組中。使用.NET修改器要比使用屬性好,因為這將簡化同其它裝配件的整合過程。
屬性是打算用來指示某個功能的簡單標誌嗎?或者屬性是否要儲存資訊?一個屬性可以擁有設計時賦予的一組資訊,並在運行時查看這些資訊。例如,看一下樣本應用中的別名屬性。
大多數情況下,可以將屬性包含在使用該屬性的裝配件中。不過也有這樣的例子,將屬性駐留在公用的、輕量級的、共用裝配件中會更好些。這種類型的配置允許客戶使用屬性時不必引用不需要的裝配件。
如果沒有模組讀取屬性,那麼它將一文不值。你很可能將讀取屬性的類放在屬性駐留的同一個裝配件中。然而,正像前面提到的,也有這樣的例子,你想將讀取屬性的方法與屬性自身分別放在不同的裝配件中。
/// <summary>
/// 自定議一下FileType屬性
/// </summary>
string sFileType = "*";
//Browsable:取得值,表示物件是否為可瀏覽。
[Browsable(true)]
//DefaultValue:取得物件,其中包含與組態屬性有關的預設值。
[DefaultValue("*")]
//Category:取得屬性 (Property) 分類的名稱或與這個屬性 (Attribute) 所套用的事件。
[Category("Basic_Property"), Description("當是輸入路徑的時候加上檔案的檔案類型")]
public string FileType
{
//取值方法
get
{
return sFileType;
}
//賦值方法
set
{
sFileType = value;
//當屬性被使用時,為了便於查看結果,將txtbox控制項賦上值
if (sFileType == "C#")
{
this.Text = "C#";
}
else
{
this.Text = "???";
}
}
}
註:
如果只設置get{ ... },表示是只讀屬性。
如果只設置set{ ... },表示是只寫屬性。只寫屬性適用於對密碼這樣的數據進行保護。理想情況下,需要確保安全性的應用程式允許設置密碼,但不允許你把它讀出來。一個登錄方法只應將用戶提供的密碼與存儲的密碼比較,並返回兩者是否匹配的訊息。
參考:http://www.pcdog.com/edu/csharp/2007/04/j184921.html