2017-09-13 90 views
0

我在我的DataGridView中打開一個CSV文件。當我點擊按鈕「下」時選擇下一行。 問題:當我打開一個新的CSV並點擊「向下」時,選擇會自動跳轉到最後選擇的舊CSV編號的行號。C#DataGridView重置行新文件

示例:我選擇第11行並打開一個新文件。第1行被選中,直到我按下「向下」。取代第2行,選擇第11行。

private void btn_down_Click(object sender, EventArgs e) 
{ 
    if (dataGridView1.Rows.Count != 0) 
    { 
     selectedRow++; 
     if (selectedRow > dataGridView1.RowCount - 1) 
     { 
      selectedRow = 0; 
      port.Write("..."); 
     } 
     dataGridView1.Rows[selectedRow].Selected = true; 
     dataGridView1.FirstDisplayedScrollingRowIndex = dataGridView1.SelectedRows[0].Index; 
    } 
} 
+0

嗨。您可能需要發佈更多的上下文。您的代碼段指的是在片段外定義的一些變量,因此很難說出發生了什麼。 – mhvelplund

回答

1

你不應該使用一個內部計數器來存儲選定行,因爲可以選擇其他組件(通過改變數據源在您的情況)來改變。只需使用dataGridView1.SelectedRows即可獲取當前選定的行。根據這一行選擇下一個。這裏是一個簡單的實現:

private void btn_down_Click(object sender, EventArgs e) 
{  
    //Make sure only one row is selected 
    if (dataGridView1.SelectedRows.Count == 1) 
    { 
     //Get the index of the currently selected row 
     int selectedIndex = dataGridView1.Rows.IndexOf(dataGridView1.SelectedRows[0]); 

     //Increase the index and select the next row if available 
     selectedIndex++; 
     if (selectedIndex < dataGridView1.Rows.Count) 
     { 
      dataGridView1.SelectedRows[0].Selected = false; 
      dataGridView1.Rows[selectedIndex].Selected = true; 
     } 
    } 
} 
+0

工作正常。非常感謝! – Tomy