C# datagridview 数据源错误的问题
一般情况下,程序不会出现错误,偶尔会发生数据源错误。这里,DataGridView的数据源是一个DataTable,DataTable会实时更新。问题:1、如下情况,会不...
一般情况下,程序不会出现错误,偶尔会发生数据源错误。
这里,DataGridView的数据源是一个 DataTable ,DataTable 会实时更新。
问题:
1、如下情况,会不会可能引起数据源错误。
在对 数据源DataTable 进行更新修改的时候,DataGridView试图获取 DataTable的内容,引起冲突。
如果是这种情况,那用 lock 是否可以解决?(如下)
// 获取 datatable
DataTable dt {
get{
lock(lockHelper){
return _dt;
}
}
}
//修改datatable
void UpdateDataTable(){
lock(lockHelper){
// ... 对 datatable 进行数据更新
}
}
2、根据后面的错误信息(绘制datagridview时出错,而且触发了 datagridview 数据源错误(datagridview有一个数据源错误的事件)),可否判断是其它什么原因引起的错误,请告知。
3、如果不可避免的发生了 数据源错误,可否用代码捕捉(try catch)到,不弹出系统提示框。
-------------------------------------------
错误信息
值不能为 null。
参数名: key
Display
************** 异常文本 **************
System.NullReferenceException: 未将对象引用设置到对象的实例。
在 System.Windows.Forms.DataGridViewCell.GetEditedFormattedValue(...)
在 System.Windows.Forms.DataGridViewCell.PaintWork(...)
在 System.Windows.Forms.DataGridViewRow.PaintCells(...)
在 System.Windows.Forms.DataGridViewRow.Paint(...)
在 System.Windows.Forms.DataGridView.PaintRows(...)
在 System.Windows.Forms.DataGridView.PaintGrid(...)
在 System.Windows.Forms.DataGridView.OnPaint(...)
... ...
==补充=============================
我的建议:
1、加 lock
2、订阅 DataGridView 的 DataError事件, 当数据源出错时,进行必要的恢复刷新处理。重要的是,阻止异常抛出:args.ThrowException = false;
参考:
https://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.dataerror.aspx 展开
这里,DataGridView的数据源是一个 DataTable ,DataTable 会实时更新。
问题:
1、如下情况,会不会可能引起数据源错误。
在对 数据源DataTable 进行更新修改的时候,DataGridView试图获取 DataTable的内容,引起冲突。
如果是这种情况,那用 lock 是否可以解决?(如下)
// 获取 datatable
DataTable dt {
get{
lock(lockHelper){
return _dt;
}
}
}
//修改datatable
void UpdateDataTable(){
lock(lockHelper){
// ... 对 datatable 进行数据更新
}
}
2、根据后面的错误信息(绘制datagridview时出错,而且触发了 datagridview 数据源错误(datagridview有一个数据源错误的事件)),可否判断是其它什么原因引起的错误,请告知。
3、如果不可避免的发生了 数据源错误,可否用代码捕捉(try catch)到,不弹出系统提示框。
-------------------------------------------
错误信息
值不能为 null。
参数名: key
Display
************** 异常文本 **************
System.NullReferenceException: 未将对象引用设置到对象的实例。
在 System.Windows.Forms.DataGridViewCell.GetEditedFormattedValue(...)
在 System.Windows.Forms.DataGridViewCell.PaintWork(...)
在 System.Windows.Forms.DataGridViewRow.PaintCells(...)
在 System.Windows.Forms.DataGridViewRow.Paint(...)
在 System.Windows.Forms.DataGridView.PaintRows(...)
在 System.Windows.Forms.DataGridView.PaintGrid(...)
在 System.Windows.Forms.DataGridView.OnPaint(...)
... ...
==补充=============================
我的建议:
1、加 lock
2、订阅 DataGridView 的 DataError事件, 当数据源出错时,进行必要的恢复刷新处理。重要的是,阻止异常抛出:args.ThrowException = false;
参考:
https://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.dataerror.aspx 展开
1个回答
展开全部
很明显当DataTable为NULL时肯定报错嘛,加个判断试试
if (DataTable != Null) 再给 DataGridView
if (DataTable != Null) 再给 DataGridView
更多追问追答
追问
不是 datatable 为 null 的问题。datatable 不为空。
datatable 要不断更新,datagridview实时显示,运行过程中datagridview偶尔会出现 datasource错误的问题.
追答
那就是其他对象为null而你却使用到该对象了,断点调试看看哪里为null了。
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询