簡體   English   中英

在 DataGridView 中顯示集合包裝類的 ToString

[英]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字段,那么我做錯了什么?

DGV 結果

Windows 窗體 DataGridView 控件中的每列類型,自動生成綁定列的唯一屬性類型是數字、文本、布爾值和圖像。

要顯示其他類型,您需要手動將列添加到DataGridView ,或使用自定義列類型(即便如此,您可能還必須手動添加它。)

有幾個選擇:

  • 您可以嘗試向SizeList添加只讀屬性以顯示列表的描述,並查看這是否會導致自動創建列。

  • 您可以嘗試手動添加一列,我相信如果您單擊DataGridView ,您可以在表單設計器中執行此操作。 您可能必須重寫一兩個方法,或使用事件處理程序,才能更改默認顯示。 (不過,它可能會使用您創建的ToString覆蓋,在這種情況下問題就解決了。)

  • 或者,您可以創建一個ListSummaryDataGridViewColumn類,它可以通過顯示其中的項目計數來表示列表,並手動添加其中一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM