假设系统中定义了Book类和BookCollection类,BookCollection类继承了ICollection<>接口;其代码如下:
public class Book
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private string author;
public string Author
{
get { return author; }
set { author = value; }
}
private DateTime date;
public DateTime Date
{
get { return date; }
set { date = value; }
}
}
public class BookCollection:ICollection<Book>
{
private List<Book> list;
public BookCollection()
{
list = new List<Book>();
}
#region ICollection<Book> 成员
public void Add(Book item)
{
list.Add(item);
}
public void Clear()
{
list.Clear();
}
public bool Contains(Book item)
{
return list.Contains(item);
}
public void CopyTo(Book[] array, int arrayIndex)
{
list.CopyTo(array, arrayIndex);
}
public int Count
{
get { return list.Count; }
}
public bool IsReadOnly
{
get { return false; }
}
public bool Remove(Book item)
{
return list.Remove(item);
}
public Book[] ToArray()
{
return list.ToArray();
}
#endregion
#region IEnumerable<Book> 成员
public IEnumerator<Book> GetEnumerator()
{
return list.GetEnumerator();
}
#endregion
#region IEnumerable 成员
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return list.GetEnumerator();
}
#endregion
}
DataGridView控件(Window Form) 在绑定自定义集合对象时,不能显示结果,其绑定代码如下:
BookCollection item = new BookCollection();
Book book = new Book();
book.Author = "tiger1";
book.Name = "C# Designer";
book.Date = DateTime.Now;
item.Add(book);
dataGridView1.DataSource = item;//绑定集合对象
但是无显示。如果绑定item.ToArray();就有结果了。
是否意味着DataGridView只能绑定数组?