为什么退出“另存为”对话框时程序会崩溃?

时间:2016-02-07 14:25:39

标签: vb.net

每次进入“另存为”对话框时,如果文件未保存,程序将崩溃,但是在保存文件时它可以正常工作。我理解为什么会发生这种情况(因为当用户退出对话框时文件名无效)但我不知道如何修复它。

具体问题是当用户退出对话框而不保存文件时程序崩溃。

感谢您的帮助:)

This is the text to be saved in a txt. file

This is the error I recieve

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

1 个答案:

答案 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