錯誤名稱:
System.NullReferenceException: Object reference not set to an instance of an object. at 命名空間.類名.gridView1_FocusedRowChanged(Object sender, FocusedRowChangedEventArgs e) 代碼: //刪除操作 private void Btn_sc_Click(object sender, EventArgs e) { if (gridView1.FocusedRowHandle > -1) { string str = "delete from 表名 where 列名='" + CurrentRow[" 列名"].ToString() + "'"; 執行sql的函數 this.Browse(); MessageBox.Show("刪除成功"); } } //刷新界面 private void Browse() { string str = "select * from 表名"; ds=執行sql獲取ds的函數; gridControl1.DataSource = ds.Tables[0].DefaultView; } //獲取行變化 private void gridView1_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) { if (gridView1.FocusedRowHandle > -1) { if (CurrentRow["列名"].ToString() != null ) { //單步調試的時候,提出錯誤出在CurrentRow["列名"] } } } 在刪除的時候先刪除編號為8的那一行時就會報錯,當先刪除編號為2的那行就不報錯。即按照紅色箭頭方向進行刪除就會報錯!(將刪除函數中的 this.Browse();注釋掉後就不再報錯) 解決對策: private void Btn_sc_Click(object sender, EventArgs e) { if (gridView1.FocusedRowHandle > -1) { string str = "delete from 表名 where 列名='" + CurrentRow[" 列名"].ToString() + "'"; 執行sql的函數 //下面這行在刪除數據後同時將數據在ds中的編號刪除 //此處的ds就是刷新界面中的那個ds ds.Tables[0].Rows.RemoveAt(gridView1.FocusedRowHandle); //刷新 gridView1.RefreshRow(gridView1.FocusedRowHandle); MessageBox.Show("刪除成功"); } } 小注:在此處用到刷新界面的兩種方式,一種是重新綁定,另一種是解決對策中的做法