问题描述
///<summary>///启动**按钮///</summary>///<paramname="sender"></param>///<paramname="e"></param>privatevoidbutton18_Click(objectsender,EventArgse){if(IsThreadRun==false){Start_ThreadMount();}}privatevoidStart_ThreadMount(){IsThreadRun=true;if((userControl71.StatusValue1==3)&&(userControl81.StatusValue2==1)){Thread_Thread=newThread(newThreadStart(StartTP));_Thread.IsBackground=true;_Thread.Start();}}privatevoidStartTP(){OnTrueNext+=newExcelIncreaseEventHandle(Form_main_OnTrueNext);ExcelIncrease();}voidForm_main_OnTrueNext(){//datagridview表向上移动一行if(ADD_c<=(10000-(AppStatus.MyStruct_Grid.Grid_Count-1))){ADD_c=10000;}else{ADD_c=ADD_c-1;}LoadExcel();//this.dataGridView1.Refresh();}///<summary>///读取Excel数据到DataGridView///</summary>privatevoidLoadExcel(){try{//清空dataGridView1所有行dataGridView1.Rows.Clear();//设置显示数据的表名dataGridView1.DataMember="[Sheet1$]";DataTable_DataTable=null;if(SourceFile!=null){//执行Read方法,返回DataTable,通过选择文件读取数据_DataTable=ExcelAX.Read(SourceFile);}else{MessageBox.Show("请检查SourceFile是否为空","Tips",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);}//显示DataTablefor(inta=0;a<(_DataTable.Rows.Count-1);a++){//当a=0的时候就是第9999行开始写入datagridview。Index_datagridview=a+(ADD_c-1);if(a==0){//添加ADD_c个行前面空了ADD_c行。dataGridView1.Rows.Add(ADD_c);//dataGridView1.Rows.Add();dataGridView1.Rows[Index_datagridview].Cells[0].Value=(a+1).ToString();dataGridView1.Rows[Index_datagridview].Cells[0].Style.BackColor=Color.FromArgb(234,234,234);dataGridView1.Rows[Index_datagridview].Cells[1].Value=_DataTable.Rows[a+1][1];dataGridView1.Rows[Index_datagridview].Cells[2].Value=_DataTable.Rows[a+1][2];dataGridView1.Rows[Index_datagridview].Cells[3].Value=_DataTable.Rows[a+1][3];dataGridView1.Rows[Index_datagridview].Cells[4].Value=_DataTable.Rows[a+1][4];dataGridView1.Rows[Index_datagridview].Cells[5].Value=_DataTable.Rows[a+1][5];dataGridView1.Rows[Index_datagridview].Cells[6].Value=_DataTable.Rows[a+1][6];dataGridView1.Rows[Index_datagridview].Cells[7].Value=_DataTable.Rows[a+1][7];dataGridView1.Rows[Index_datagridview].Cells[8].Value=_DataTable.Rows[a+1][8];dataGridView1.Rows[Index_datagridview].Cells[9].Value=_DataTable.Rows[a+1][9];dataGridView1.Rows[Index_datagridview].Cells[10].Value=_DataTable.Rows[a+1][10];dataGridView1.Rows[Index_datagridview].Cells[11].Value=_DataTable.Rows[a+1][11];dataGridView1.Rows[Index_datagridview].Cells[12].Value=_DataTable.Rows[a+1][12];}else{dataGridView1.Rows.Add(1);//a行的序号列dataGridView1.Rows[Index_datagridview].Cells[0].Value=(a+1).ToString();dataGridView1.Rows[Index_datagridview].Cells[0].Style.BackColor=Color.FromArgb(234,234,234);dataGridView1.Rows[Index_datagridview].Cells[1].Value=_DataTable.Rows[a+1][1];dataGridView1.Rows[Index_datagridview].Cells[2].Value=_DataTable.Rows[a+1][2];dataGridView1.Rows[Index_datagridview].Cells[3].Value=_DataTable.Rows[a+1][3];dataGridView1.Rows[Index_datagridview].Cells[4].Value=_DataTable.Rows[a+1][4];dataGridView1.Rows[Index_datagridview].Cells[5].Value=_DataTable.Rows[a+1][5];dataGridView1.Rows[Index_datagridview].Cells[6].Value=_DataTable.Rows[a+1][6];dataGridView1.Rows[Index_datagridview].Cells[7].Value=_DataTable.Rows[a+1][7];dataGridView1.Rows[Index_datagridview].Cells[8].Value=_DataTable.Rows[a+1][8];dataGridView1.Rows[Index_datagridview].Cells[9].Value=_DataTable.Rows[a+1][9];dataGridView1.Rows[Index_datagridview].Cells[10].Value=_DataTable.Rows[a+1][10];dataGridView1.Rows[Index_datagridview].Cells[11].Value=_DataTable.Rows[a+1][11];dataGridView1.Rows[Index_datagridview].Cells[12].Value=_DataTable.Rows[a+1][12];}}//设置此行背景dataGridView1.Rows[9999].DefaultCellStyle.BackColor=Color.Blue;//设置此行前色dataGridView1.Rows[9999].DefaultCellStyle.ForeColor=Color.Red;//设置scroll的位置dataGridView1.FirstDisplayedScrollingRowIndex=(9996);}catch(ExceptionERR){MessageBox.Show(ERR.ToString());return;}}为什么会出现下面的错误呢
解决方案
解决方案二:
publiceventExcelIncreaseEventHandleOnTrueNext;protectedvoidExcelIncrease(){OnTrueNext();}publicdelegatevoidExcelIncreaseEventHandle();
解决方案三:
add改为Insert即可。
解决方案四:
把数据处理想得太复杂了,建议在后台处理好要绑定的DataSet,使用虚拟模式加载,效果要好很多.