C# 自定義屬性在propertyGrid控制元件中顯示
在上篇文章(地址: C# 設計時動態改變實體在PropertyGrid中顯示出來的屬性)中可以看到:
自定義屬性的顯示是有問題的,那麼如何修改呢?
程式碼如下:
public class PropertyDisplayConverterr<T> : ExpandableObjectConverter where T : IDisplay
{
public override bool CanConvertTo(ITypeDescriptorContext context, System.Type destinationType)
{
if (destinationType == typeof(T))
return true;
return base.CanConvertTo(context, destinationType);
}
// This is a special type converter which will be associated with the T class.
// It converts an T object to string representation for use in a property grid.
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, System.Type destinationType)
{
if (destinationType == typeof(System.String) && value is T)
{
return ((IDisplay)value).GetDisplayString();
}
return base.ConvertTo(context, culture, value, destinationType);
}
}
介面: public interface IDisplay
{
/// <summary>
/// 得到顯示字串
/// </summary>
/// <returns></returns>
string GetDisplayString();
}
修改上文中實體類如下: [TypeConverterAttribute(typeof(PropertyDisplayConverterr<IdentityColumnEntity>))]
public class IdentityColumnEntity : IDisplay
{
private bool isIncrementColumn;
/// <summary>
/// 是否是自增列
/// </summary>
[Browsable(true)]
[Category("基本")]
[DisplayName("是否是自增列")]
[ReadOnly(false)]
[DefaultValue(false)]
public bool IsIncrementColumn
{
set { isIncrementColumn = value; }
get { return isIncrementColumn; }
}
private Int64 identityIncrement;
/// <summary>
/// 標識增量
/// </summary>
[Browsable(true)]
[Category("基本")]
[DisplayName("標識增量")]
[ReadOnly(false)]
[Description("標識增量屬性指定在 Microsoft SQL Server 為插入的行生成標識值時,在現有的最大行標識值基礎上所加的值。標識增量必須是 非零 整數,位數等於或小於 10。")]
public Int64 IdentityIncrement
{
set { identityIncrement = value; }
get { return identityIncrement; }
}
private Int64 ident_Seed;
/// <summary>
/// 標識種子
/// </summary>
[Browsable(true)]
[Category("基本")]
[DisplayName("標識種子")]
[ReadOnly(false)]
[Description("指示標識列的初始行值。標識種子必須是 整數,位數等於或小於 10。")]
public Int64 Ident_Seed
{
set { ident_Seed = value; }
get { return ident_Seed; }
}
public string GetDisplayString()
{
if (this == null || this.IdentityIncrement == 0)
{
return "未設定自增列資訊";
}
return String.Format("標識種子:{0};標識增量:{1}", this.Ident_Seed, this.IdentityIncrement);
}
}
效果如下:
演示程式碼:點選開啟連結
本文參考:Customized display of collection data in a PropertyGrid
參考文章中demo:點選開啟連結
擴充:
相關文章
- C# 設計時動態改變實體在PropertyGrid中顯示出來的屬性C#
- Android自定義控制元件——自定義屬性Android控制元件
- 4. 自定義控制元件(4) --- 自定義屬性控制元件
- Android自定義控制元件之自定義屬性Android控制元件
- Android自定義組合控制元件之自定義屬性Android控制元件
- destoon中自定義欄位的前臺顯示,及修改相關屬性
- .net自定義控制元件下拉的屬性控制元件
- PropertyGrid控制元件 分類(Category)及屬性(Property)排序控制元件Go排序
- android 自定義控制元件 自定義屬性詳細介紹Android控制元件
- WPF 自定義控制元件的坑(蠢的:自定義控制元件內容不顯示)控制元件
- android中自定義屬性重複定義Android
- Qt編寫自定義控制元件屬性設計器QT控制元件
- 自定義View:自定義屬性(自定義按鈕實現)View
- CSS 自定義屬性指北CSS
- data-* 自定義屬性
- Android自定義屬性Android
- 自定義來電顯示
- C#自定義FileUpload控制元件C#控制元件
- 提取aspnet_Profile中自定義的使用者屬性(C#實現)C#
- 初識css自定義屬性CSS
- CSS 自定義屬性(變數)CSS變數
- 屬性動畫:如何自定義View動畫View
- easyui tree自定義屬性用法UI
- CSS自定義屬性Expression(轉)CSSExpress
- C#自定義控制元件:如果定義控制元件的事件C#控制元件事件
- 自定義SeekBar顯示進度
- MUI DtPicker 顯示自定義日期UI
- c#自定義液晶數字控制元件C#控制元件
- C#自定義控制元件製作篇C#控制元件
- 在 WebSphere Process Server 中為新的查詢要求設定自定義屬性WebServer
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- ubuntu下OpenLDAP新增自定義屬性UbuntuLDA
- 使用 CSS 自定義屬性(變數)CSS變數
- Android自定義View 屬性新增AndroidView
- 給自定義View新增xml屬性ViewXML
- 如何自定義終端顯示配置
- 帶你深入理解Android中的自定義屬性!!!Android
- Android 深入理解Android中的自定義屬性Android