繁体   English   中英

VB.NET 如何使用 savefiledialog 保存列表视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM