vb.net DataGridView窗体代码多行中删除是否包含指定全子匹配字符串的一行,并返回这一行的字符串详细代码,每行注释
时间: 2024-03-13 12:44:29 浏览: 69
下面是VB.NET中使用DataGridView窗体应用程序删除包含指定子字符串的行的代码,同时返回被删除行的详细信息,每行都有注释说明:
```
Private Function RemoveRowsContainingSubstring(ByVal dgv As DataGridView, ByVal substr As String) As List(Of String)
Dim removedRows As New List(Of String)() '存储被删除的行的详细信息
Dim rowsToDelete As New List(Of DataGridViewRow)() '存储要删除的行
For Each row As DataGridViewRow In dgv.Rows '遍历所有行
If row.IsNewRow Then Continue For '如果是新行则跳过
For Each cell As DataGridViewCell In row.Cells '遍历行中的所有单元格
If cell.Value IsNot Nothing AndAlso cell.Value.ToString().IndexOf(substr, StringComparison.OrdinalIgnoreCase) > -1 Then '判断单元格中是否包含指定子字符串
rowsToDelete.Add(row) '将要删除的行添加到列表中
Exit For '一旦找到包含指定子字符串的单元格,就跳出循环
End If
Next
Next
For Each row As DataGridViewRow In rowsToDelete '遍历要删除的行
removedRows.Add(GetRowDetails(row)) '将被删除行的详细信息添加到列表中
dgv.Rows.Remove(row) '从DataGridView中删除该行
Next
Return removedRows '返回被删除行的详细信息
End Function
Private Function GetRowDetails(ByVal row As DataGridViewRow) As String
Dim details As New StringBuilder() '用于存储行的详细信息
For Each cell As DataGridViewCell In row.Cells '遍历行中的所有单元格
If cell.Value IsNot Nothing Then '如果单元格有值
details.Append(cell.Value.ToString()) '将单元格的值添加到字符串中
End If
details.Append(vbTab) '添加制表符,用于分隔每个单元格的值
Next
Return details.ToString() '返回行的详细信息
End Function
Private Sub btnRemoveRows_Click(sender As Object, e As EventArgs) Handles btnRemoveRows.Click
Dim removedRows As List(Of String) = RemoveRowsContainingSubstring(dataGridView1, "指定子字符串") '调用RemoveRowsContainingSubstring函数删除包含指定子字符串的行
If removedRows.Count > 0 Then '如果有行被删除
MessageBox.Show("以下行被删除:" & vbNewLine & String.Join(vbNewLine, removedRows.ToArray())) '显示被删除行的详细信息
Else
MessageBox.Show("没有行被删除。") '否则显示没有行被删除
End If
End Sub
```
其中,`dataGridView1`是要操作的DataGridView控件,`"指定子字符串"`是要查找的子字符串,函数返回值`removedRows`是一个存储被删除行的详细信息的字符串列表。`btnRemoveRows`是一个按钮控件,单击该按钮将调用`RemoveRowsContainingSubstring`函数删除包含指定子字符串的行,并显示被删除行的详细信息。
阅读全文