В строке StrExport = StrExport.Substring(0, StrExport.Length - 1)
, я думаю, вы хотели использовать &=
вместо =
.
Однако вы должны использовать StringBuilder для создания строки, потому что он более эффективен при объединении более десяти частей строки вместе.
Чтобы объединить строки вместе с запятой / чем-либо еще между, String.Join полезно, потому что у вас нет беспокоиться о последней запятой.
И, наконец, немного LINQ вы можете сделать код немного короче, но при этом довольно легко понять:
Private Sub bnSaveSelected_Click(sender As Object, e As EventArgs) Handles bnSaveSelected.Click
Dim sb As New Text.StringBuilder()
sb.AppendLine(String.Join(",", dataGVGeneral.Columns.Cast(Of DataGridViewColumn).Select(Function(c) c.HeaderText)))
For Each dr As DataGridViewRow In dataGVGeneral.Rows
If dr.Selected Then
sb.AppendLine(String.Join(",", dr.Cells.Cast(Of DataGridViewCell).Select(Function(c) c.Value.ToString())))
End If
Next
IO.File.WriteAllText("C:\temp\SampleCsv.csv", sb.ToString())
End Sub