我已经在这段代码上绞尽脑汁了几天,我似乎无法让它运转起来。我研究和研究没有运气。我的表单上有四个文本框。两个文本框是文件夹位置,另外两个文本框是文件位置。我正在尝试使用一个函数来返回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
如果在启动时选中了复选框运行应用程序,这两种方式都将显示消息框。它不仅会显示消息框,还会显示消息框两次!我还没想到那个!
答案 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()
...