2014-09-18 4 views
1

Я использую .NET 4.5 DataGridView в C# (Visual Studio 2010) с несколькими столбцами (Index, PosX, PosY, ...). Я заполнить его с несколькими рядами пользовательских данных, как это:Запрос определенного столбца DataGridView на основе CurrentRow

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); 

Каждая строка содержит информацию для одного объекта, идентифицированного с помощью значения столбца «Index». Когда пользователь выбирает строку, я хочу знать, какой объект был выбран. Я использую «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 такое же, как значение «Index» на колонке 1. Однако пользователь может сортировать DataGrid по-другому, например, на основе столбца «Позиция X».

Так что я хочу знать, как я могу получить доступ к значению определенного столбца, основанного только на индексе строки.

ответ

0

Я нашел решение, как это:

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