【问题标题】:Save Data to text tile using SaveFileDialog?使用 SaveFileDialog 将数据保存到文本文件?
【发布时间】:2013-03-14 21:31:37
【问题描述】:

我已经查看了MSDN Example,但我仍然遇到问题。

我创建了一个超级简单的程序来将两个数字相乘,并在文本框中显示输出。现在我需要能够读取该文本框的值并将该值放入文本文件中,当单击“保存到文件”按钮时会弹出保存到文件对话框。

Private Sub MutiplyBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MutiplyBtn.Click
    Dim FirstNum As Double = Num1.Text
    Dim SecondNum As Double = Num2.Text
    Dim Answer2 As Double = FirstNum * SecondNum
    Answerbox.Text = Answer2
End Sub

Private Sub SaveResultToFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SaveResultToFile.Click
    Dim myStream As Stream
    Dim saveFileDialog1 As New SaveFileDialog()

    saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"
    saveFileDialog1.FilterIndex = 2
    saveFileDialog1.RestoreDirectory = True

    If saveFileDialog1.ShowDialog() = DialogResult.OK Then
        myStream = saveFileDialog1.OpenFile()
        If (myStream IsNot Nothing) Then
            System.IO.File.WriteAllText(Answerbox.Text)
            myStream.Close()
        End If
    End If
End Sub

目前,Visual Studio 给我一个错误:Overload resolution failed because no accessible 'WriteAllText' accepts this number of arguments.

【问题讨论】:

    标签: vb.net file text dialog save


    【解决方案1】:

    WriteAllText 静态方法需要写入数据的文件的名称。
    您可以直接使用在 saveFileDialog1 中选择的名称

    If saveFileDialog1.ShowDialog() = DialogResult.OK Then
        System.IO.File.WriteAllText(saveFiledialog1.FileName, Answerbox.Text)
    End If
    

    如果你真的想使用 OpenFile() 方法打开的流,你的代码应该是

       If saveFileDialog1.ShowDialog() = DialogResult.OK Then
            Dim sw As StreamWriter = new StreamWriter(saveFileDialog1.OpenFile())
            If (sw IsNot Nothing) Then 
                sw.WriteLine(Answerbox.Text)
                sw.Close()
            End If 
        End If 
    

    代码为示例,需要添加一点错误处理

    【讨论】:

    • 谢谢,看来已经解决了。
    • Steve,效果很好,但这总是会覆盖数据。如何将文本附加到文件末尾?
    • @Mikhail_Sam File.AppendAllText
    • 或使用不同的StreamWriter constructor
    • 史蒂夫,谢谢你这么快的反应!我不知道如何将 StreamWriter 构造函数与 saveFileDialog 一起使用:saveFileDialog.OpenFile() 返回 Stream 但 SW 构造函数将字符串作为参数!我不明白如何为流创建构造函数。你能举个例子吗?
    【解决方案2】:

    您好我尝试了上述方法,但我以这种方式成功....

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       SaveFileDialog1.Filter = "TXT Files (*.txt*)|*.txt"
          If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK _
          Then
             My.Computer.FileSystem.WriteAllText _
             (SaveFileDialog1.FileName, RichTextBox1.Text, True)
          End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 2018-09-27
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多