標籤:
自己定義的控制項屬性:
[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# 屬性控制項的應用(備忘)