You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BindingList绑定DataGridView添加首个元素抛出InvalidOperationException异常

.NET 4.7.2 Winforms DataGridView绑定BindingList异常解决

核心原因

问题源于DataGridView默认的允许用户添加行机制与手动向BindingList添加元素的逻辑冲突,再加上绑定时机不当,导致自动生成空Frame实例,触发InvalidOperationException。

分步解决

  • 禁用自动添加行功能(最关键)
    DataGridView默认会向绑定的BindingList插入一个空对象用于用户新增行,这和手动添加第一个元素的操作冲突,直接关闭该功能:

    dgv.AllowUserToAddRows = false;
    
  • 调整绑定时机
    确保BindingList完成实例化后再绑定到DataGridView,避免绑定未初始化的列表:

    // 先实例化BindingList
    BindingList<Frame> Frames = new BindingList<Frame>();
    // 再绑定数据源
    dgv.DataSource = Frames;
    
  • 检查Frame类的属性定义
    必须提供公共的可读写属性,DataGridView无法绑定私有字段或只读属性,否则会生成空元素:

    public class Frame
    {
        public int FrameId { get; set; }
        public string FrameName { get; set; }
        // 所有需要显示的字段都需定义为公共可读写属性
    }
    
  • 清空现有列后绑定(可选)
    如果之前手动添加过DataGridView列,可能与自动生成的列冲突,绑定前清空列集合:

    dgv.Columns.Clear();
    dgv.DataSource = Frames;
    

内容的提问来源于stack exchange,提问作者Ricardo De Oliveira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 21:19:50