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#自定義控制元件—文字顯示、文字設值C#控制元件
- 4. 自定義控制元件(4) --- 自定義屬性控制元件
- Qt編寫自定義控制元件屬性設計器QT控制元件
- CSS 自定義屬性指北CSS
- data-* 自定義屬性
- C#自定義控制元件—指示燈C#控制元件
- C#自定義控制元件—儀表盤C#控制元件
- C#自定義控制元件—流動管道C#控制元件
- 給Product新增自定義屬性
- 初識css自定義屬性CSS
- ReactNative自定義元件及屬性React元件
- CSS 自定義屬性(變數)CSS變數
- Android 自定義View:深入理解自定義屬性(七)AndroidView
- MUI DtPicker 顯示自定義日期UI
- C#自定義控制元件—旋轉按鈕C#控制元件
- C#自定義控制元件—轉換開關C#控制元件
- Django Admin自定義app中模型顯示順序DjangoAPP模型
- 自定義元件-資料、方法、屬性元件
- spring 自定義屬性解析器Spring
- 使用 CSS 自定義屬性(變數)CSS變數
- ubuntu下OpenLDAP新增自定義屬性UbuntuLDA
- React Native 自定義元件及屬性React Native元件
- 帶你深入理解Android中的自定義屬性!!!Android
- 如何自定義終端顯示配置
- WPF/C#:在DataGrid中顯示選擇框C#
- 在WPF程式中實現PropertyGrid功能
- Spring Cloud自定義引導屬性源SpringCloud
- Spring Boot讀取自定義外部屬性Spring Boot
- Android 自定義View:屬性動畫(六)AndroidView動畫
- 【譯】CSS 自定義屬性的策略指南CSS
- C#中屬性的解析C#
- CSS變數(自定義屬性)實踐指南CSS變數
- 使用CSS自定義屬性構建骨架屏CSS
- 自定義bmp影像縮放及在lcd螢幕任意位置顯示
- 【Web Components】關於自定義元件屬性在 Vue 和 React 中不同表現的探討Web元件VueReact
- 在 Avalonia 程式中新增自定義字型,並最佳化字型顯示效果自定義字型
- Python日誌記錄中新增自定義屬性Python
- CSS Var 自定義屬性中使用 Scss 變數CSS變數
- SpringBoot入門(二):日誌及自定義屬性Spring Boot