gpt4 book ai didi

c# - 如何获取 DataGridView 的当前行索引?

转载 作者:太空宇宙 更新时间:2023-11-03 23:17:35 26 4
gpt4 key购买 nike

我想要 DataGridView 中的当前行。不是通过鼠标单击,而是通过按回车...

我知道这个:

datagridview.CurrentCell.RowIndex

datagridview.CurrentRow.Index

datagridview.SelectedRows[0].Index

...

我的问题是,一般情况下这可以正常工作,除非我到达最后一行。因为它总是获取倒数第二行的索引。

知道这是怎么发生的吗?

最佳答案

DataGridView 中捕获当前行真的很简单,你已经发布了两种工作正常的方法:

int currentRow = datagridview.CurrentCell.RowIndex;

或者:

int currentRow = datagridview.CurrentRow.Index

第三个实际上是相当有问题的,取决于SelectionModeDataGridView当前行可能被选中。

但是您的问题来自尝试获取索引以响应用户点击Enter 键

默认情况下,这将当前单元格向下移动一行,如果有一个。所以最后一行和其他行之间的行为会有所不同..

如果没有“下一个”行,则当前单元格将保留在原处,或者,如果 AllowUserToAddRows为真,DGV 将创建一个新的空行并移动到那里。

因此,如果您总是想在不移动当前单元格的情况下获取当前索引,则需要阻止处理 Enter 键。

这是一种方法:

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
// don't pass the enter key on to the DGV:
e.Handled = true;
// now store or proecess the index:
Console.WriteLine(dataGridView1.CurrentRow + "");
}
}

用户仍然可以使用光标键四处移动。

关于c# - 如何获取 DataGridView 的当前行索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36746665/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com