在OpenFileDialog框中取消抛出错误

时间:2013-03-08 14:21:03

标签: vb.net openfiledialog

我正在尝试实现一个OpenFileDialog框,它的工作正常,除非我选择单击取消然后程序抛出一个错误,说该文件无法找到,这让我感到困惑,因为我没有选择文件。

以下是代码。我如何实现取消按钮?

OpenFileDialog1.InitialDirectory = "C:\"
OpenFileDialog1.FileName = "Select a Batch file..."
OpenFileDialog1.Filter = "Batch files (*.bat) | *.bat"
OpenFileDialog1.ShowDialog()

If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then
    OpenFileDialog1.Dispose()
End If

Dim R As New IO.StreamReader(OpenFileDialog1.FileName)
TextBox4.Text = R.ReadToEnd
R.Close()

Button4.Enabled = True
Button6.Enabled = True

5 个答案:

答案 0 :(得分:2)

您注释了取消对话框的(不充分)处理。把它放回去:

Dim openFileDialog1 As New OpenFileDialog()
openFileDialog1.Filter = "Batch files (*.bat)|*.bat|All files|*.*"
Dim result = openFileDialog1.ShowDialog()

If result = DialogResult.Cancel Then
    Return ' Just leave the method
End If

' … rest of method

您还应该考虑适当的变量名称。 OpenFileDialog1TextBox3Button2 从不适当的名称。良好的标识符极大地提高了代码的可读性。

答案 1 :(得分:2)

在这两种情况下,

Dialog将自行配置 - 如果用户取消其预期的操作,您就不会做任何事情。这应该这样做:

OpenFileDialog1.InitialDirectory = "C:\"
OpenFileDialog1.FileName = "Select a Batch file..."
OpenFileDialog1.Filter = "Batch files (*.bat) | *.bat"
OpenFileDialog1.ShowDialog()

If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then

   Dim R As New IO.StreamReader(OpenFileDialog1.FileName)
   TextBox4.Text = R.ReadToEnd
   R.Close()

   Button4.Enabled = True
   Button6.Enabled = True   

End If

当然,您必须添加一些额外的错误处理,但这是另一个故事。

答案 2 :(得分:0)

        Dim result = OpenFileDialog1.ShowDialog()

    If result = True Then
        Dim R As New IO.StreamReader(OpenFileDialog1.FileName)
        TextBox4.Text = R.ReadToEnd
       R.Close()

    Button4.Enabled = True
    Button6.Enabled = True
    else
        ' handle the error, e.g. msgbox (no vaild file chosen"
     End If

答案 3 :(得分:0)

这对我的项目有用。

    Dim bResult As DialogResult = sfdReportFile.ShowDialog()

    If bResult = DialogResult.OK Then
        tbFilePathName.Text = sfdReportFile.FileName.ToString
    End If

您需要将结果定义为DialogResult,以检查它是否正常,并将文件路径发送到您需要的任何内容。

答案 4 :(得分:0)

在我的项目中,我使用了SaveFileDialog。如果用户关闭了对话框窗口,则没有文件名,并且发生错误。使用下面的代码,除非有文件名要使用,否则我的进程不会运行。

If SaveFileDialog1.FileName = Nothing Then

Else
     Code to run here when a file name is selected.
End If

OpenFileDialog可以运行同样的事情。只需添加if then即可检查文件名是否已保存,如果没有,请不要运行代码。