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

C#中设置DataGridView.DataSource时抛出NullReferenceException异常

排查与解决NullReferenceException问题

核心原因分析

异常发生在DGWork.DataSource = workBS;,说明**DGWork对象本身为null**——因为workBS已通过new BindingSource()实例化,且绑定了填充后的workDT,不可能为空。

具体解决步骤

  • 检查新项目中DGWork控件是否正确拖放到窗体/页面,或是否通过代码完成实例化。如果是手动创建控件,必须先执行DGWork = new DataGridView();这类初始化代码,再赋值数据源。
  • 确认窗体初始化顺序,比如不要在构造函数中直接执行数据绑定,此时控件可能还未完成创建,建议移至Form_Load等控件初始化完成后的事件中执行。
  • 检查新项目中是否误删DGWork控件的定义,或变量名拼写错误(比如大小写不一致,部分新项目编译选项会区分大小写)。
  • 调试验证:在赋值前添加代码Debug.Assert(DGWork != null, "DGWork未初始化");,运行时会直接提示控件是否为空。

补充验证代码

可以在原代码中增加空值检查,确认各对象状态:

// 填充数据后添加检查
Debug.WriteLine($"workDT行数: {workDT.Rows.Count}");
Debug.WriteLine($"workBS是否为空: {workBS == null}");
Debug.WriteLine($"DGWork是否为空: {DGWork == null}");
// 安全执行赋值
if(DGWork != null)
{
    DGWork.DataSource = workBS;
}
else
{
    throw new InvalidOperationException("DGWork控件未初始化");
}

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 00:27:03