问题描述
voidHandleReceive(inteventID,stringdate,stringtime,intdspID,stringmessage,Imagei1,Imagei2){while(alertTable.Rows.Count>=50)//DataGridView中的报警信息超过50条就删除第一条,不断地往上顶{alertTable.Rows[0].Delete();}DataRowdr=alertTable.NewRow();dr[0]=eventID.ToString();dr[1]=date;dr[2]=time;dr[3]=dspID.ToString();dr[4]=message;dr[5]=i1;dr[6]=i2;alertTable.Rows.Add(dr);Invoke(bindDataSourceDelegate,newobject[]{dgvCurrentAlert,alertTable});//绑定数据源intindex=alertTable.Rows.Count-1;Invoke(ResizeDataGridViewDelegate,newobject[]{dgvCurrentAlert,index});//调整新行大小dgvCurrentAlert.Rows[index].Selected=true;}当DataGridView行数不超过50的时候,按上下键在DataGridView中切换CurrentCell没有问题。超过50就有异常,而且异常在Application.Run()中抛出:操作无效,原因是它导致对SetCurrentCellAddressCore函数的可重入调用。
解决方案
解决方案二:
alertTable.Rows.Add(dr);下加一句:alertTable.AcceptChanges();
解决方案三:
路过,学习!