我想获取我的 DataGridView 的当前行的索引。问题是,如果当前行是新行,则 CurrentRow 被设置为不是新行的最后一行。我无法检查要选择的行,因为如果选择了一行并不意味着它是当前行并且不一定选择当前行。
我可以得到新行的索引,但是我怎么知道新行是否是当前行呢?
我想获取我的 DataGridView 的当前行的索引。问题是,如果当前行是新行,则 CurrentRow 被设置为不是新行的最后一行。我无法检查要选择的行,因为如果选择了一行并不意味着它是当前行并且不一定选择当前行。
我可以得到新行的索引,但是我怎么知道新行是否是当前行呢?
我通过以下代码连接到 CellClick 事件:
private void uiEntries_CellClick(object sender, DataGridViewCellEventArgs e)
{
Console.WriteLine(e.RowIndex == uiEntries.NewRowIndex);
}
当该条件为真时,用户“选择”了新行。根据该信息,您可能需要实际插入一条新记录(使用 ..Rows.Add() 方法),然后才能对其进行实际操作,因为新行实际上并不存在于集合中;它只是作为代表新行的占位符。
这个属性值能解决你的问题吗?
dataGridView1.CurrentCell.RowIndex
我使用 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;
}
}