vb.net DataGridView 定义一个函数指定多个列标题,获取列标题下面对应的单元格文本多种方法,代码后面带注释
时间: 2024-03-20 19:41:23 浏览: 18
以下是使用 VB.NET DataGridView 定义一个函数指定多个列标题,获取列标题下面对应的单元格文本的多种方法的示例代码,每个方法的代码后面都有注释:
方法一:使用 LINQ 查询和 Join 方法拼接字符串
```vb.net
' 定义一个函数,指定多个列标题,获取列标题下面对应的单元格文本
Private Function GetCellTextsByTitles(ByVal dgv As DataGridView, ByVal ParamArray columnTitles() As String) As List(Of String)
' 遍历 DataGridView 的行集合,使用 LINQ 查询获取指定列标题的单元格文本,并使用 Join 方法拼接成一个字符串
Dim texts = From row As DataGridViewRow In dgv.Rows
Select String.Join(",", From title In columnTitles
Let column = dgv.Columns.Cast(Of DataGridViewColumn).FirstOrDefault(Function(c) c.HeaderText = title)
Where column IsNot Nothing
Select row.Cells(column.Index).Value.ToString())
' 返回文本列表
Return texts.ToList()
End Function
```
方法二:使用 StringBuilder 类拼接字符串
```vb.net
' 定义一个函数,指定多个列标题,获取列标题下面对应的单元格文本
Private Function GetCellTextsByTitles(ByVal dgv As DataGridView, ByVal ParamArray columnTitles() As String) As List(Of String)
' 初始化一个空的文本列表
Dim texts As New List(Of String)
' 遍历 DataGridView 的行集合
For Each row As DataGridViewRow In dgv.Rows
' 初始化一个 StringBuilder 对象,用于拼接每个单元格的文本
Dim sb As New StringBuilder()
' 遍历指定的列标题
For Each title In columnTitles
' 查找指定标题的列
Dim column = dgv.Columns.Cast(Of DataGridViewColumn).FirstOrDefault(Function(c) c.HeaderText = title)
' 如果找到了指定标题的列,则将其对应单元格的文本添加到 StringBuilder 对象中
If column IsNot Nothing Then
sb.Append(row.Cells(column.Index).Value.ToString()).Append(",")
End If
Next
' 将 StringBuilder 对象中的文本转换为字符串,并将其添加到列表中
If sb.Length > 0 Then
sb.Length -= 1 ' 去掉最后一个逗号
texts.Add(sb.ToString())
End If
Next
' 返回文本列表
Return texts
End Function
```
方法三:使用数组拼接字符串
```vb.net
' 定义一个函数,指定多个列标题,获取列标题下面对应的单元格文本
Private Function GetCellTextsByTitles(ByVal dgv As DataGridView, ByVal ParamArray columnTitles() As String) As List(Of String)
' 初始化一个空的文本列表
Dim texts As New List(Of String)
' 遍历 DataGridView 的行集合
For Each row As DataGridViewRow In dgv.Rows
' 初始化一个空的文本数组,用于存储每个单元格的文本
Dim cellTexts(columnTitles.Length - 1) As String
' 遍历指定的列标题
For i = 0 To columnTitles.Length - 1
' 查找指定标题的列
Dim column = dgv.Columns.Cast(Of DataGridViewColumn).FirstOrDefault(Function(c) c.HeaderText = columnTitles(i))
' 如果找到了指定标题的列,则将其对应单元格的文本添加到文本数组中
If column IsNot Nothing Then
cellTexts(i) = row.Cells(column.Index).Value.ToString()
End If
Next
' 将文本数组中的文本拼接成一个字符串,并将其添加到列表中
texts.Add(String.Join(",", cellTexts.Where(Function(text) text IsNot Nothing)))
Next
' 返回文本列表
Return texts
End Function
```
以上三种方法分别使用了 LINQ 查询和 Join 方法、StringBuilder 类和数组拼接字符串的方式获取单元格文本,并将其添加到一个文本列表中。这些方法的具体实现方式略有不同,但都可以实现指定多个列标题,获取列标题下面对应的单元格文本的功能。