无法使用文本框检查文件是否存在
Can't get checking if file exists using textboxes to work
几天来我一直在为这段代码绞尽脑汁,但我似乎无法让它工作。我已经研究和研究没有运气。我的表单上有四个文本框。两个文本框是文件夹位置,另外两个文本框是文件位置。我正在尝试使用一个函数,该函数将 return 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
如果应用程序 运行 在启动时勾选了复选框,这两种方式都会显示消息框。它不仅会显示消息框,还会显示消息框两次!我还没弄明白!
你的检查文件存在可以被简化...(我已经有一段时间没有使用 VB 所以对于任何语法错误深表歉意,我手头没有 IDE)
Function DoesFileExist(Folder as String, Filename As String) As Boolean
Return IO.File.Exists(IO.Path.Combine(Folder, Filename))
End Function
回复:更改是否设置了 "check" 复选框不应自行执行检查 - 否则您只会在人们点击时检查。 (顺便说一下,我猜你收到的消息是其他地方 ticks/unticks 这个复选框的代码的两倍,但这只是一个猜测)。
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
,它会在文件系统更改时为您提供事件,但您也可以使用计时器进行轮询...
Private PollTimer As System.Timers.Timer
然后在您的 Form Main 中,进行一些初始计时器设置...
...
PollTimer = New System.Timers.Timer()
PollTimer.Interval = 30000 ' Seconds
AddHandler PollTimer.Elapsed, AddressOf CheckExistsNow
PollTimer.Start()
...
最后是 运行 每次我们要进行检查时的代码....
Sub CheckExistsNow(sender As Object, e As System.Timers.ElapsedEventArgs)
If Not DoesFileExist(txtGPU.Text, txtFileGPU.Text) Then
' Handle the missing file.
End if
End Sub
几天来我一直在为这段代码绞尽脑汁,但我似乎无法让它工作。我已经研究和研究没有运气。我的表单上有四个文本框。两个文本框是文件夹位置,另外两个文本框是文件位置。我正在尝试使用一个函数,该函数将 return 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
如果应用程序 运行 在启动时勾选了复选框,这两种方式都会显示消息框。它不仅会显示消息框,还会显示消息框两次!我还没弄明白!
你的检查文件存在可以被简化...(我已经有一段时间没有使用 VB 所以对于任何语法错误深表歉意,我手头没有 IDE)
Function DoesFileExist(Folder as String, Filename As String) As Boolean
Return IO.File.Exists(IO.Path.Combine(Folder, Filename))
End Function
回复:更改是否设置了 "check" 复选框不应自行执行检查 - 否则您只会在人们点击时检查。 (顺便说一下,我猜你收到的消息是其他地方 ticks/unticks 这个复选框的代码的两倍,但这只是一个猜测)。
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
,它会在文件系统更改时为您提供事件,但您也可以使用计时器进行轮询...
Private PollTimer As System.Timers.Timer
然后在您的 Form Main 中,进行一些初始计时器设置...
...
PollTimer = New System.Timers.Timer()
PollTimer.Interval = 30000 ' Seconds
AddHandler PollTimer.Elapsed, AddressOf CheckExistsNow
PollTimer.Start()
...
最后是 运行 每次我们要进行检查时的代码....
Sub CheckExistsNow(sender As Object, e As System.Timers.ElapsedEventArgs)
If Not DoesFileExist(txtGPU.Text, txtFileGPU.Text) Then
' Handle the missing file.
End if
End Sub