转自:sunrack

将List<T>转换为BindingList<T>,然后设置DataGridView的DataSource为BindingList<T>!!
代码:

DataGridView.DataSource = new BindingList<T>(List<T>);

将绑定BindingList<T>的DataSource转化为List<T>,同理
代码:

List<T> modelList=new List<T>((BindingList<T>)this.DataGridView.DataSource);

说明:BindingList<T>和List<T>都有个构造函数,参数是IEnumerable<T>,既然他们俩个都是继承IEnumerable,当然能相互转换。

下面是这个构造函数的执行过程:

List绑定时无法进行增删查改的解决办法public List(IEnumerable<T> collection)
List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法{
List绑定时无法进行增删查改的解决办法 if (collection == null)
List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法{
List绑定时无法进行增删查改的解决办法        ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection);
List绑定时无法进行增删查改的解决办法    }
List绑定时无法进行增删查改的解决办法    ICollection<T> is2 = collection as ICollection<T>;
List绑定时无法进行增删查改的解决办法 if (is2 != null)
List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法{
List绑定时无法进行增删查改的解决办法 int count = is2.Count;
List绑定时无法进行增删查改的解决办法 this._items = new T[count];
List绑定时无法进行增删查改的解决办法        is2.CopyTo(this._items, 0);
List绑定时无法进行增删查改的解决办法 this._size = count;
List绑定时无法进行增删查改的解决办法    }
List绑定时无法进行增删查改的解决办法 else
List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法{
List绑定时无法进行增删查改的解决办法 this._size = 0;
List绑定时无法进行增删查改的解决办法 this._items = new T[4];
List绑定时无法进行增删查改的解决办法 using (IEnumerator<T> enumerator = collection.GetEnumerator())
List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法{
List绑定时无法进行增删查改的解决办法 while (enumerator.MoveNext())
List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法List绑定时无法进行增删查改的解决办法{
List绑定时无法进行增删查改的解决办法 this.Add(enumerator.Current);
List绑定时无法进行增删查改的解决办法            }
List绑定时无法进行增删查改的解决办法        }
List绑定时无法进行增删查改的解决办法    }
List绑定时无法进行增删查改的解决办法}

相关文章:

  • 2021-11-19
  • 2021-12-30
  • 2022-12-23
  • 2021-09-26
  • 2021-06-02
  • 2021-05-24
猜你喜欢
  • 2022-01-03
  • 2021-09-01
  • 2022-02-08
  • 2022-01-12
  • 2021-06-27
  • 2021-12-21
相关资源
相似解决方案