2012-10-27 67 views
0

在我的datagridview中,我有4列,當用戶給第一行一些值時,我想採用1st row 4th cell value and put it to the 2nd Row 3rd cell,就像我必須申請的所有行(請參閱圖像)。在某些情況下,我只有2行,最大的我會有4行。將datagridview單元格值自動複製到同一個datagridview中的另一個單元格

它的工作方式如下,但當我測試2或3行它不工作..顯然第三和第四是不存在的。

我該怎麼辦?有沒有更好的方式做到這一點?

這裏我編碼最多4行。

private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e) 
     { 
      var value1 = dataGridView1.Rows[0].Cells[3].Value.ToString(); 
      dataGridView1.Rows[1].Cells[2].Value = value1; 

      var value2 = dataGridView1.Rows[1].Cells[3].Value.ToString(); 
      dataGridView1.Rows[2].Cells[2].Value = value2; 

      var value3 = dataGridView1.Rows[2].Cells[3].Value.ToString(); 
      dataGridView1.Rows[3].Cells[2].Value = value3; 
     } 

enter image description here

回答

2

這樣的事情,你應該處理CellEndEdit,絕對不要硬編碼行索引。

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
{ 
    if (e.ColumnIndex != 3) 
     return; 
    int nextRowIndex = e.RowIndex + 1; 
    int lastRowIndex = dataGridView1.Rows.Count - 1; 
    if (nextRowIndex <= lastRowIndex) 
    { 
     var value = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString(); 
     dataGridView1.Rows[nextRowIndex].Cells[2].Value = value; 
    } 
} 
+0

我有一個另外一個問題,我得到了驗證細胞及細胞驗證event..when我用你的方法或我的方法,並留在細胞中的光標,我嘗試打開另一個文件..我'越來越錯誤'參數超出範圍異常未處理'我必須調用cellEndEdit方法?謝謝。 – linguini

+0

我不明白!你如何打開一個文件,以及打開一個文件和你的DataGridView之間的關係是什麼? – ehsanarc

+0

如果我將光標留在單元格中並通過打開文件打開另一個文件...我得到上述錯誤。如果刪除光標並打開另一個文件..然後我沒有得到任何錯誤。一旦我在單元格中輸入了某些東西,它不會立即反映出來..我必須點擊兩次以反映..這是正常的? – linguini

相關問題