[英]VB.NET how to save listview with savefiledialog
我的代码有问题,我想使用 savefiledialog 将列表视图项保存到文本文件中。
我收到错误“重载解析失败,因为没有可访问的‘WriteAllLines’接受这个数量的参数。”
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles ChromeButton3.Click
Dim s As New SaveFileDialog
s.Filter = "text|*.txt"
s.Title = "Save Your Hits"
If s.ShowDialog = Windows.Forms.DialogResult.OK Then
For Each myItem As ListViewItem In ListView1.Items
File.WriteAllLines(myItem.Text & vbNewLine & myItem.SubItems(1).Text & vbNewLine & myItem.SubItems(2).Text & vbNewLine & myItem.SubItems(3).Text & vbNewLine & vbNewLine)
Next
End If
End Sub
你的错误
重载解析失败
可以通过查看文档来纠正。 使用任何不熟悉的方法执行此操作是个好主意。 只需谷歌“in .net”后面的方法,出现的第一个链接是https://docs.microsoft.com/en-us/dotnet/api/system.io.file.writealllines?view=netframework-4.8和文档中的第一个主题是重载。 我认为您可以看到没有一个重载与您尝试通过的重载相匹配。
正如评论中提到的 File.Write All lines 并不真正适合您的目的。 不是在记录之间创建所有这些行和双行,而是让每一行成为用逗号分隔每个字段的单行。 我使用了一个 StringBuilder,它提供了一个可变(可变)数据类型(与不可变的 String 不同)。 避免编译器在每次迭代时丢弃和创建新字符串。
我在每次迭代中添加了一个新行,其中包含一个内插字符串。 内插字符串以 $ 开头。 这允许您直接将包含在 { } 中的变量与文字字符混合。
在循环之后,您将 StringBuilder 转换为 String 并使用对话框提供的文件名写入文件。
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim s As New SaveFileDialog
s.Filter = "text|*.txt"
s.Title = "Save Your Hits"
If s.ShowDialog = DialogResult.OK Then
Dim fileName = s.FileName
Dim sb As New StringBuilder
For Each myItem As ListViewItem In ListView1.Items
sb.AppendLine($"{myItem.Text},{myItem.SubItems(1).Text},{myItem.SubItems(2).Text},{myItem.SubItems(3).Text}")
Next
File.WriteAllText(fileName, sb.ToString)
End If
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.