2015-07-07 2 views
1

Я сделал код для удаления выбранной строки, вы можете увидеть здесь:Как удалить несколько строк в DataGrid

var grid = Players_DataGrid; 
     var mygrid = Players_DataGrid; 

     if (grid.SelectedIndex >= 0) 
     { 
      for (int i = 0; i <= grid.SelectedItems.Count; i++) 
      { 
       mygrid.Items.Remove(grid.SelectedItems[i]); 
      }; 
     } 

     grid = mygrid; 

Но есть проблема. Если пользователь выбрать несколько с ctrl комбинаций строк сбой программы отображения этого исключения:

Argument из исключения диапазона

на mygrid.Items.Remove(grid.SelectedItems[i]);

Является ли мой код не так? Не лучший способ удалить значения?

ответ

1

вы удаляете элемент из списка, в котором вы выполняете итерацию. Допустим, ваш список содержит 10 элементов, поэтому у вас есть цикл от 0 до 9. Если вы удаляете 2 Вещи, которые вы все еще будете перебирать до 9, и в списке есть только 8 пунктов, так что вы получите:

Аргумент из исключения диапазона

вы можете решить эту проблему итерация назад

for (int i = grid.SelectedItems.Count -1; i >= 0; i--) 

Edit: удаленный элемент будет удален из grid.SelectedItems тоже.

+0

Очень хорошее решение. Congrats! –

Смежные вопросы