关于Dictionary<k,v>绑定DataGridView的问题以及曲线解决办法

通过查阅资料发现:

DataGridView的数据源必须是实现以下接口的任意类型:

(1)IList 接口,包括一维数组。

(2)IListSource 接口,例如,DataTable和DataSet类。

(3)IBindingList 接口,例如,BindingList<T>类。

(4)IBindingListView 接口,例如,BindingSource类。
MSDN解释
而Dictionary的类型定义为:
[SerializableAttribute]
[ComVisibleAttribute(false)]
public class Dictionary<TKey,TValue> : IDictionary<TKey,TValue>, ICollection<KeyValuePair<TKey,TValue>>,
IEnumerable<KeyValuePair<TKey,TValue>>, IDictionary, ICollection, IEnumerable,
ISerializable, IDeserializationCallback
并未实现以上接口
MSDN解释
 
而今天课程的练习中有的同学,希望使用父类的Dictionary集合绑定DataGridView数据源,没有成功。而使用BindingDataSource又因为集合中的对象是不同子类型而失败。经过考虑我们可以使用如下的方法来解决。
      //定义集合分别存放数据
      Dictionary<string, Vehicle> vehicle=new Dictionary<string,Vehicle> ();//没被出租的车集合
     //……省略添加元素代码……

      //将集合中的对象保存到数组,然后将数组作为数据源
      Vehicle[] vehiclesArray = new Vehicle[vehicle.Count];
     vehicle.Values.CopyTo(vehiclesArray,0);
     dgvRent.DataSource = vehiclesArray;
作者:于为源 出处: http://www.cnblogs.com/yuanyuan/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/yuanyuan/p/2266735.html