我试图将我的textbox1内容保存到我的计算机的文本文件中。
我要做的是创建一个保存目录,当它设置好后,我将textbox1
的内容保存到该txt文件中。
不只一次,我想把文本框的内容附加到同一个文件后面。
Button2
:尝试浏览并创建一个txt文件。Button4
(第一次点击):此按钮将textbox1
的内容保存到创建的txt文件中。Button4
(第二次点击)":这将把textbox1
的当前内容添加到同一个txt文件中。
但是我希望能够随时更改目录。
我还想选择代码外或文本框外的路径。
意思是,我想要一个按钮,让我选择一个文件夹,我想要创建一个文本文件。
第二个按钮将让我保存textbox1
的内容到创建的文本文件。
这是我的一些代码,但我不知道我做的是否正确,因为它现在正在做我想要的。请帮助。
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim isave As New SaveFileDialog
isave.Filter = "txt files (*.txt) |*.txt"
isave.FilterIndex = 2
isave.RestoreDirectory = False
If isave.ShowDialog() = DialogResult.OK Then
IO.File.WriteAllText(isave.FileName, TextBox1.Text)
End If
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim theText As String
theText = TextBox1.Text
IO.File.AppendAllText("isave", Environment.NewLine & theText)
End Sub
一种可能的方式:
- 使用字段(这里是
lastSaveFileName
)来存储最后保存的文件的路径。 - 使用SaveFileDialog获取文件路径,将结果存储在
lastSaveFileName
中- SaveFileDialog要求确认文件是否已经存在。用户可以选择是否覆盖它
- 如果用户选择不覆盖现有文件(因此取消操作),则
lastSaveFileName
被设置为空字符串,因此您不能向该文件添加新文本。
如果这不是你期望的行为(例如,您想要保存和更新在前一个会话中创建的文件),然后删除sfd.OverwritePrompt = True
并使用File.AppendAllText()
代替File.WriteAllText()
- 要更新所选文件,添加更多文本,请使用先前存储的
lastSaveFileName
引用- 如果文件不存在—此时—或者从未指定过,则提示用户先创建文件。您也可以将文件路径存储在Project的Settings 中。
我已经将按钮重命名为SaveFile
和UpdateFile
,并将文本框重命名为TextContent
:为控件分配有意义的名称总是更好的
SaveFileDialog对象必须用Using
语句声明,因为您需要在它关闭时处理它(使用ShowDialog()
显示的窗口不能处理它自己)。使用Using
语句声明一个可处置对象,确保即使在此期间引发异常,该对象也会被处置;大多数时候)
Imports System.IO
Private lastSaveFileName As String = String.Empty
Private Sub SaveFile_Click(sender As Object, e As EventArgs) Handles SaveFile.Click
lastSaveFileName = GetSaveFileName(lastSaveFileName)
If Not String.IsNullOrEmpty(lastSaveFileName) Then
File.WriteAllText(lastSaveFileName, TextContent.Text)
End If
End Sub
Private Sub UpdateFile_Click(sender As Object, e As EventArgs) Handles UpdateFile.Click
If Not String.IsNullOrEmpty(lastSaveFileName) AndAlso File.Exists(lastSaveFileName) Then
File.AppendAllText(lastSaveFileName, Environment.NewLine & TextContent.Text)
Else
MessageBox.Show(
Me, "The file has not been created yet [other instructions]",
"Save file missing", MessageBoxButtons.OK, MessageBoxIcon.Information
)
End If
End Sub
Private Function GetSaveFileName(suggestedName As String) As String
Using sfd As New SaveFileDialog()
sfd.Filter = "Text Files (*.txt) |*.txt"
sfd.FileName = suggestedName
sfd.OverwritePrompt = True
If sfd.ShowDialog() = DialogResult.OK Then
Return sfd.FileName
End If
Return String.Empty
End Using
End Function