0

我有一个检查文件是否存在的函数(返回 file.exists(file))。如果它不存在,那么我会显示一条带有选项 Abort、Retry、Ignore 的错误消息。

我的问题是我无法让它重试。

我尝试将代码放在一个单独的函数中检查文件是否存在,然后从 select case 语句的重试案例中调用该函数,但它似乎正好过去了(因为它已经知道它不存在? ) 我尝试创建一个单独的类,其中包含检查文件是否存在的函数,然后每次调用它时都创建该类的新实例,但这没有帮助。

我错过了什么吗?

我希望应用程序在每次用户单击重试时再次检查,直到他们按下中止或忽略(或者当然它确实找到了文件。

处理重试的正确方法是什么?

Private Sub main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    If CheckFileExists() Then
     'do stuff here
    End If
End Sub

Private Function CheckFileExists()
    If Not FindFile() Then
        Select Case MessageBox.Show("Can't Find File", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error)
            Case Windows.Forms.DialogResult.Abort
                End
            Case Windows.Forms.DialogResult.Retry
                Return FindFile()
            Case Windows.Forms.DialogResult.Ignore
                MessageBox.Show("Proceeding without file present")
                'do some other stuff
                Return True
            Case Else
                Return False
        End Select
    Else
        Return True
    End If
End Function

Private Function FindFile() As Boolean
    Return System.IO.File.Exist(path\file.ext)
End Function

我也试过把它放到一个类中:

Private Function FindFile() As Boolean
    Dim fc As New FileCheck
    If Not fc.fnFileCheck() Then
        Return False
    Else
        Return True
    End If
End Function


Public Class FileCheck
Public Function fnFileCheck() As Boolean
    Return System.IO.File.Exist(path\file.ext)
End Function
End Class
4

1 回答 1

1

如果您想继续检查文件,直到按下中止或忽略,我认为您必须调用CheckFileExists()而不是FindFile()在“重试”情况下

Private Function CheckFileExists()
    If Not FindFile() Then
        Select Case MessageBox.Show("Can't Find File", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error)
            Case Windows.Forms.DialogResult.Abort
                End
            Case Windows.Forms.DialogResult.Retry
                Return CheckFileExists()
            Case Windows.Forms.DialogResult.Ignore
                MessageBox.Show("Proceeding without file present")
                'do some other stuff
                Return True
            Case Else
                Return False
        End Select
    Else
        Return True
    End If
End Function
于 2013-05-23T19:38:14.843 回答