1

我正在尝试实现一个 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
4

5 回答 5

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

您还应该考虑正确的变量名称。OpenFileDialog1,TextBox3并且永远不是Button2合适的名称。好的标识符极大地增加了代码的可读性。

于 2013-03-08T15:00:57.077 回答
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

当然,您将不得不添加一些额外的错误处理,但这是另一回事。

于 2013-03-08T15:07:03.607 回答
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
于 2013-03-08T14:51:00.067 回答
0

这对我的项目有用。

    Dim bResult As DialogResult = sfdReportFile.ShowDialog()

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

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

于 2015-01-19T05:31:40.527 回答
0

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

If SaveFileDialog1.FileName = Nothing Then

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

可以为OpenFileDialog. 只需添加一个if then以检查文件名是否已保存,如果没有,请不要运行代码。

于 2015-02-07T04:10:23.820 回答