基于CurrentRow查询特定的DataGridView列

本文关键字:DataGridView CurrentRow 查询 基于 | 更新日期: 2023-09-27 18:22:23

我在C#(Visual Studio 2010)中使用了一个.NET 4.5 DataGridView,它有几个列(Index、PosX、PosY…)。我用几行自定义数据填充它,如下所示:

string[] row = new string[MyDataGridView.ColumnCount];
for (int i = 0; i < NumResults; i++)
    row = new string[] { i.ToString(), PosXArray[i].ToString(), PosYArray[i].ToString(), ... }
MyDataGridView.Rows.Add(row);

每一行包含一个对象的信息,该对象由"索引"列值标识。当用户选择一行时,我想知道选择了哪个对象。我正在使用"SelectionChanged"事件来请求CurrentRow,如下所示:

int CurrentRow = -1;
private void MyDataGridView_SelectionChanged(object sender, EventArgs e)
{
    if (MyDataGridView.CurrentRow.Index != CurrentRow)
        // Access the data over MyDataGridView.CurrentRow.Index
    CurrentRow = MyDataGridView.CurrentRow.Index;
}

只要CurrentRow索引与列1上的"index"值相同,就可以使用此方法。然而,用户可以以不同的方式对数据网格进行排序,例如基于"位置X"列。

因此,我想知道如何仅基于行索引来访问特定列的值。

基于CurrentRow查询特定的DataGridView列

我找到了这样的解决方案:

string ObjectIndex = MyDataGridView.Rows[MyDataGridView.CurrentRow.Index].Cells[0].Value.ToString();