2015-11-18 2 views
0

Привет У меня есть datagridview с множественным выбором, равным true. Как я могу позволить пользователю удалить все, НО выбранные строки в datagridview?Удалить UNSELECTED строки в datagridview

Я попробовал это, но это не похоже на работу:

For Each r As DataGridViewRow In DataGridView1.Rows 
     If r.Selected = False Then 
      DataGridView1.Rows.Remove(r) 
     End If 
    Next 
+1

Я думаю, вы должны использовать цикл, подобный строке (i). Выбрано = False, тогда – ivan

ответ

0

For Each петли использовать Enumerator и вы не должны изменить источник данных для интервьюером, пока вы еще пересекая его.

Возможно, лучший способ, но если все остальное не удастся, вы должны сделать это, добавив ссылки на каждую невыбранную строку в новый список, а затем перейдя по списку, чтобы удалить их из сетки.

0

Попробуйте это:

For Each r As DataGridViewRow In DataGridView1.Rows 
      If r.Selected = False Then 
       Dim row As String = r.ToString.Split("=")(1)(0) 
       DataGridView1.Rows(row).Visible = False 
      End If 
     Next 
0

Я предлагаю вам использовать LINQ здесь

'This will selects all the selected rows in your Datagridview 

    Dim sel_rows As List(Of DataGridViewRow) = (From row In DataGridView1.Rows.Cast(Of DataGridViewRow)() _ 
                Where row.Selected = False).ToList() 




If MsgBox(String.Format("Do you want to delete {0} row(s)?", sel_rows.Count) _ 
       , MsgBoxStyle.Information + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton3) = MsgBoxResult.Yes Then 

    For Each row As DataGridViewRow In sel_rows 
     If row.DataBoundItem IsNot Nothing Then 
      DataGridView1.Rows.Remove(row) 
     End If 
    Next 
End If 

Примечание: MsgBox() не является обязательным!

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