您好我有一个datagridview,其multiselection设置为true。 我如何让用户删除所有但是在datagridview中删除所选行?
我尝试了这个,但它似乎不起作用:
For Each r As DataGridViewRow In DataGridView1.Rows
If r.Selected = False Then
DataGridView1.Rows.Remove(r)
End If
Next
答案 0 :(得分:0)
For Each
循环使用枚举器,并且您不应该更改枚举器的数据源,而您仍在循环播放它。
可能有更好的方法,但是如果所有其他方法都失败了,你应该能够通过将每个未选择的行的引用添加到新列表,然后循环遍历列表以从网格中删除它们来实现此目的
答案 1 :(得分: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
答案 2 :(得分: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()
是可选的!