zoukankan      html  css  js  c++  java
  • DataGridView绑定List时无法进行添加删除操作的解决方法

    将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,当然能相互转换。

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

    public List(IEnumerable<T> collection)
    {
        
    if (collection == null)
        
    {
            ThrowHelper.ThrowArgumentNullException(ExceptionArgument.collection);
        }

        ICollection
    <T> is2 = collection as ICollection<T>;
        
    if (is2 != null)
        
    {
            
    int count = is2.Count;
            
    this._items = new T[count];
            is2.CopyTo(
    this._items, 0);
            
    this._size = count;
        }

        
    else
        
    {
            
    this._size = 0;
            
    this._items = new T[4];
            
    using (IEnumerator<T> enumerator = collection.GetEnumerator())
            
    {
                
    while (enumerator.MoveNext())
                
    {
                    
    this.Add(enumerator.Current);
                }

            }

        }

    }

  • 相关阅读:
    C++ 不用 < > 与 : ?运算符判断 a,b大小
    CentOS7 MariaDB10
    CentOS Linux 挂载NTFS
    Linux访问Windows共享
    Emacs配置与插件集记录
    驱动精妙耍流氓,强制安装"新毒霸"
    C# TextBox控件之大小写自动转换
    生活随笔
    显示外网IP
    MySql
  • 原文地址:https://www.cnblogs.com/yoshirogu/p/1564846.html
Copyright © 2011-2022 走看看