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
相关产品推荐
相关产品推荐

