2014-02-28 57 views
2
private void dgvWorkOrder_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) 
    { 
     if (e.ColumnIndex == 0 && e.RowIndex == dgvWorkOrder.RowCount - 1) 
     { 
      try 
      { 
       string check = dgvWorkOrder.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Please input a valid entry.", "Empty"); 
       e.Cancel = true; 
      } 
     } 
     if (e.ColumnIndex == 2 && e.RowIndex == dgvWorkOrder.RowCount - 1) ; 
     { 
      try 
      { 
       decimal check = Convert.ToDecimal(dgvWorkOrder.Rows[e.RowIndex].Cells[e.ColumnIndex].Value); 
       if (check == 0) 
       { 
        throw new Exception(); 
       } 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Please input a valid entry."); 
       e.Cancel = true; 
      } 
     } 
    } 

隨着上面的代碼,我試圖做一個離開事件,檢查用戶是否輸入任何東西。如果他們不這樣做,我希望它們不會離開那個單元格,直到他們完成,停止其他任何可以完全退出該程序的單元。C#防止DataGridView離開

根據要求更新。

回答

1

如果您想讓用戶不再離開單元,您只需使用不同的事件CellValidating並將e.Cancel設置爲true即可。您無需使用此事件設置CurrentCellBeginEdit

+0

這有效,但是,它似乎落後了一步,我猜。我有另一個在允許它們繼續前檢查是否有小數。但是,我可以輸入狗,它會讓我第一次離開牢房,但不是第二次。 – user3169698

+0

@ user3169698:發佈在事件處理程序中運行的代碼,作爲對您問題的編輯。 –

+0

更新了代碼。 – user3169698