无法检查文件是否存在使用文本框工作

时间:2018-01-02 13:00:47

标签: vb.net file-exists

我已经在这段代码上绞尽脑汁了几天,我似乎无法让它运转起来。我研究和研究没有运气。我的表单上有四个文本框。两个文本框是文件夹位置,另外两个文本框是文件位置。我正在尝试使用一个函数来返回true或false,告诉两个文本框中的文件是否存在。我没有看到任何错误的代码,它只是不起作用!我敢肯定,这是一件很简单的事情。也许别人可以发现它!

Private Function doesFileExist(folderPath, fileName) As Boolean
    If IO.File.Exists(folderPath & "\" & fileName) Then
        Return True
    Else
        Return False
    End If
End Function

Private Sub chkStart_CheckedChanged(sender As Object, e As EventArgs) Handles chkStart.CheckedChanged
    If doesFileExist(txtCPU.Text, txtFileCPU.Text) And
        doesFileExist(txtGPU.Text, txtFileGPU.Text) Then
        If chkStart.Checked Then
            chkStart.Text = "Stop Monitor"
        Else
            chkStart.Checked = False
            chkStart.Text = "Start Monitor"
        End If
    Else
        chkStart.Checked = False
        MessageBox.Show("Please check directory & file locations!", "Error!", MessageBoxButtons.OK)
        End if
End Sub

我想提一下,在我尝试嵌套if语句之前,我还尝试将它们分开,就像这样..

Private Sub chkStart_CheckedChanged(sender As Object, e As EventArgs) Handles chkStart.CheckedChanged
    If Not doesFileExist(txtCPU.Text, txtFileCPU.Text) And
       Not doesFileExist(txtGPU.Text, txtFileGPU.Text) Then
        chkStart.Checked = False
        MessageBox.Show("Please check directory & file locations!", "Error!", MessageBoxButtons.OK)
        Exit Sub
    End If

    If chkStart.Checked Then
        chkStart.Text = "Stop Monitor"
    Else
        chkStart.Checked = False
        chkStart.Text = "Start Monitor"
    End If
End Sub

如果在启动时选中了复选框运行应用程序,这两种方式都将显示消息框。它不仅会显示消息框,还会显示消息框两次!我还没想到那个!

1 个答案:

答案 0 :(得分:3)

你的检查文件存在可以简化......(自从我使用VB以来已经有一段时间了,所以对于任何语法错误道歉,我没有IDE可用)

mask_face = cv2.rectangle(mask_face, (x,y), (x + w,y + h), (255,255,255), -1)

回复:更改是否设置了“检查”复选框不应执行检查本身 - 否则您只检查人们点击的时间。 (顺便说一下,我猜你得到的消息是两次代码,其他地方勾选/取消勾选此复选框,但这只是一个猜测。)

Function DoesFileExist(Folder as String, Filename As String) As Boolean
    Return IO.File.Exists(IO.Path.Combine(Folder, Filename))
End Function

最后......您需要定义检查何时发生。理想情况下,您希望使用Private Sub chkStart_CheckedChanged(sender As Object, e As EventArgs) Handles chkStart.CheckedChanged If chkStart.Checked Then chkStart.Text = "Stop Monitor" PollTimer.Start() Else chkStart.Text = "Start Monitor" PollTimer.Stop() End if End Sub ,它会在文件系统更改时为您提供事件,但您也可以使用计时器轮询...

FileSystemWatcher

然后在Form Main中,做一些初始定时器设置......

Private PollTimer As System.Timers.Timer

最后每次我们想要检查时运行的代码......

...
PollTimer = New System.Timers.Timer()
PollTimer.Interval = 30000 ' Seconds
AddHandler PollTimer.Elapsed, AddressOf CheckExistsNow
PollTimer.Start()
...