[英]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.