每次进入“另存为”对话框时,如果文件未保存,程序将崩溃,但是在保存文件时它可以正常工作。我理解为什么会发生这种情况(因为当用户退出对话框时文件名无效)但我不知道如何修复它。
具体问题是当用户退出对话框而不保存文件时程序崩溃。
感谢您的帮助:)
This is the text to be saved in a txt. file
Private Sub btnSaveDetails_Click(sender As Object, e As EventArgs) Handles btnSaveDetails.Click
Dim ni As IO.StreamWriter
Dim itms() As String = {ListBox.Items.ToString}
Dim save As New SaveFileDialog
Dim it As Integer
save.Filter = "*.txt|*.txt|All Files (*.*)|*.*"
save.CheckPathExists = True
save.ShowDialog(Me)
ni = New IO.StreamWriter(save.FileName)
For it = 0 To ListBox.Items.Count - 1
ni.WriteLine(ListBox.Items.Item(it))
Next
MessageBox.Show("File Saved!")
ni.Close()
End Sub
答案 0 :(得分:1)
对方法ShowDialog
的调用返回类型DialogResult
的值。您需要检查此值是否等于DialogResult.OK
,并且只有在尝试写入文件时才会尝试。如果不是,则应跳过文件IO。
这样的事情(注意使用Using
块来自动处理需要它的对象):
Private Sub btnSaveDetails_Click(sender As Object, e As EventArgs) Handles btnSaveDetails.Click
Dim itms() As String = {ListBox.Items.ToString}
Using save As New SaveFileDialog
save.Filter = "*.txt|*.txt|All Files (*.*)|*.*"
save.CheckPathExists = True
If save.ShowDialog(Me) == DialogResult.OK Then
Using ni As New IO.StreamWriter(save.FileName)
Dim it As Integer
For it = 0 To ListBox.Items.Count - 1
ni.WriteLine(ListBox.Items.Item(it))
Next
End Using
MessageBox.Show("File Saved!")
Else
MessageBox.Show("Save Aborted!")
End If
End Using
End Sub