[英]Show ToString of a Collection Wrapper Class in DataGridView
我有一個類,其屬性之一是ObservableCollection<string>
類型
public class SizeList
{
public string ID { get; set; }
public string Name { get; set; }
//public ObservableCollection<string> List { get; set; }
public ListEntryCollection List { get; set; }
}
在單元測試期間,我返回一個SizeList
列表,然后在DataGridView
中顯示它以檢查我期望的結果,數據很好,但我缺少 DGV 中的字段List
; 僅顯示 ID 和名稱,因此我為ObservableCollection<string>
創建了一個包裝類並覆蓋了它的.ToString()
方法:
namespace System.Collections.ObjectModel
{
using System.Collections.Generic;
public class ListEntryCollection : ObservableCollection<string>
{
public ListEntryCollection(IEnumerable<string> collection)
: base(collection)
{
}
public override string ToString()
{
return Count.ToString() + ((Count > 1) ? " Entries": " Entry");
}
}
}
但是我仍然沒有得到 DGV 中的List
字段,那么我做錯了什么?
Windows 窗體 DataGridView 控件中的每列類型,自動生成綁定列的唯一屬性類型是數字、文本、布爾值和圖像。
要顯示其他類型,您需要手動將列添加到DataGridView
,或使用自定義列類型(即便如此,您可能還必須手動添加它。)
有幾個選擇:
您可以嘗試向SizeList
添加只讀屬性以顯示列表的描述,並查看這是否會導致自動創建列。
您可以嘗試手動添加一列,我相信如果您單擊DataGridView
,您可以在表單設計器中執行此操作。 您可能必須重寫一兩個方法,或使用事件處理程序,才能更改默認顯示。 (不過,它可能會使用您創建的ToString
覆蓋,在這種情況下問題就解決了。)
或者,您可以創建一個ListSummaryDataGridViewColumn
類,它可以通過顯示其中的項目計數來表示列表,並手動添加其中一個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.