2013-02-08 3 views
0

Мне нужно получить последний отредактированный индекс строки ячейки datagridview с помощью cellClick_event.индекс не связан нажатием

Я пытался так:

private void DataGridView_CellClick(object sender, DataGridViewCellEventArgs e) 
    { 
     var lastIndex = DataGridView.SelectedRows[DataGridView.SelectedRows.Count - 1].Index; 
     var currentIndex = DataGridView.CurrentRow.Index; 
     if (currentIndex != lastIndex) 
     { 
      //code 
     } 
     else 
     { 
     } 
    } 

, но это не работает. Я получаю сообщение об ошибке:

index out of bound 
  • Как получить последний отредактированный индекс cell's строки для DataGridView с cellClick_event?
  • Есть ли другие события, кроме datagridview.cellclick, чтобы решить эту проблему?
+1

Вы хотите Роу, что последний раз была изменена? как в строке, которая была/выбрана последним. – Derek

+0

Нет. Мне нужна текущая измененная строка. ничего не обнаружил в событиях datagridview. –

+1

Я не думаю, что индекс был бы таким же, вы должны проверить, является ли 'CurrentRow' уже частью коллекции или не что-то вроде' .SelectedRows.Contains (DataGridView.CurrentRow) '(но это строки, выбранные пользователем и не обязательно редактируется) – V4Vendetta

ответ

0

Установить datagridview editeMode в EditonEnter. Затем, когда вы нажимаете на ячейку, она должна указывать индекс последней измененной строки, которая является индексом строки ячейки, которую вы включили.

int i = dataGridView.CurrentRow.Index; 

Или, если ваше после индекса предыдущей строки редактирования, вы можете записать выше значение в «Cell_Leave» дескриптор события.

+0

Вот что я сделал .. он дает мне текущий индекс строки. Мне нужен индекс последней отредактированной строки. –

+0

Спасибо в любом случае .. :) –

+0

Если вы хотите, чтобы он дал вам индекс строки при редактировании ячейки, см. Мое обновление. – Derek

1

Предполагая, что вы хотите сравнить строку, щелкнув по редактируемой строке, это должно сделать трюк;

void DataGridView_CellClick(object sender, DataGridViewCellEventArgs e) { 

    int currentIndex = DataGridView.CurrentRow.Index; 
    int clickedCellRowIndex = e.RowIndex; 

    if (currentIndex == clickedCellRowIndex) { 
     //do work 
    } 
0

Нельзя использовать событие CellEndEdit. Когда это вызывается, вы получите доступ к только что отредактированной строке. Однако вам нужно будет найти способ увидеть, действительно ли он был отредактирован, поскольку я думаю, что это вызвано, даже если редактирование отменено.

B

0

Это может помочь вам это

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
    { 
     dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[e.ColumnIndex]; 
    }