我想獲取DataGridView的當前行的索引。問題是,如果當前行是新行,則CurrentRow被設置爲不是新行的最後一行。我無法檢查要選擇的行,因爲如果選擇了一行並不意味着它是當前行,並且不一定選擇當前行。DataGridView CurrentRow排除新行
我可以得到新行的索引,但是如何知道新行是否是當前行?
我想獲取DataGridView的當前行的索引。問題是,如果當前行是新行,則CurrentRow被設置爲不是新行的最後一行。我無法檢查要選擇的行,因爲如果選擇了一行並不意味着它是當前行,並且不一定選擇當前行。DataGridView CurrentRow排除新行
我可以得到新行的索引,但是如何知道新行是否是當前行?
我通過下面的代碼鉤入CellClick事件:
private void uiEntries_CellClick(object sender, DataGridViewCellEventArgs e)
{
Console.WriteLine(e.RowIndex == uiEntries.NewRowIndex);
}
當該條件爲真,則用戶 '選擇' 新行。根據這些信息,您可能需要實際插入一條新記錄(使用..Rows.Add()方法),然後才能真正對其執行任何操作,因爲新行實際上並不存在於集合中;它只是作爲一個佔位符來表示一個新行。
我使用CellEnter事件將CurrentCell.RowIndex保存到表單變量中。單擊另一個按鈕會導致此事件觸發最後一個現有行索引,而不是我們需要的新行索引,因此測試焦點以忽略該情況。
這樣就避免了必須檢查所有可能的鍵和鼠標操作,這些操作可能會將光標移動到新行,就像您使用CellClick事件一樣。
從VB代碼自動轉換:
private int ActualCurrentRowIndex;
private void DataGridView1_CellEnter(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
{
if (DataGridView1.Focused) {
ActualCurrentRowIndex = DataGridView1.CurrentCell.RowIndex;
}
}
嗨, 在某種程度上我明白你的意思,但我不明白爲什麼你必須使用currentRow你怎麼whant做蒙山呢? 最好的問候, Iordan – IordanTanev 2009-08-16 12:19:20
我想用當用戶單擊按鈕時填充當前行的單元格。如果該行碰巧是新行,則應該創建該行,並且應該用該值填充單元格。 – Ruud 2009-08-16 12:46:07