在DataGrid_CurrentCellChanged事件中加入一行
private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
{
    dataGrid1.Select(dataGrid1.CurrentRowIndex);
}
当用Del键删除最后一行时发生异常(未将对象引用设置到对象的实例。),我反复检查了下标是否越界,可以发现是正常的。而且dataGrid1.Select()已经执行完毕,异常是Application.Run()中抛出的!正是奇怪啊。
在Table.RowDeleted事件中也会出现相同的情况,不过在Table.RowDeleting中不会出错,但达不到目的了!最郁闷的是异常在Application.Run()中,捕捉到也已经晚了!

解决方案 »

  1.   

    to 当用Del键删除最后一行时发生异常(未将对象引用设置到对象的实例。)我的推断,是你的dataGrid1.Select(dataGrid1.CurrentRowIndex);这句话有问题,如果删除了最后一行的话,那么会导致dataGrid1去选中一个未初始化的行。
      

  2.   

    可是我试过了,删除其它行的时候dataGrid1.CurrentRowIndex的值不变,当删除最后一行的时候dataGrid1.CurrentRowIndex会自动减1,下标并没有越界。而且异常不是在dataGrid1.Select()时抛出的。