DatagridView报"对象的当前状态使该操作无效"

最近在项目中用经常用到DatagridView来呈现数据,并且数据要可添加和编辑,于是绑定的时候就用到了BindingList.

在需要可以添加新行的情况下很容易就报"对象的当前状态使该操作无效。"这个异常.

经反复测试检查,发现代码并没有错误,并且从异常信息来看,该异常应该是在控件内部调用时引发的.当编辑焦点进入到新行然后离开,控件会自动添加(在未编辑的情况下)一行空的(自定义类的默认值)数据,并且离开后控件又未删除这个行数据.如果下次再执行这样的操作,原本绑定的数据就会出现重复数据(两个完全相同的自定义类的默认值),这样就引发了这个异常.

目前我只找到这一种解决方案,就是在控件单元格离开事件中取消编辑模式.

View Code
 1 private void dgvServiceItem_CellLeave(object sender, DataGridViewCellEventArgs e)
 2         {
 3             if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
 4             {
 5                 if (dgvServiceItem.Rows[e.RowIndex].IsNewRow)
 6                 {
 7                     dgvServiceItem.CancelEdit();
 8                 }
 9             }
10         }
posted @ 2012-08-10 11:45  春華秋實  Views(1402)  Comments(0Edit  收藏  举报