好吧,在我的列表框中的第一项出现之前,我的文件系统观察器不会触发。但不会按该顺序创建列表框中列出的文件。
进一步解释...
我正在获取在文本框中输入的值,并将该值添加到列表框中,并在图片框中更改该值旁边的图标。该图标将提醒用户 PDF 尚未创建。
ListBox1.Items.Add(TextBoxTicketID.Text)
If CStr(ListBox1.Items(0)) = TextBoxTicketID.Text Then
PictureBoxStatus1.Image = My.Resources.Orange_Information
ElseIf (ListBox1.Items(1)) = TextBoxTicketID.Text Then
PictureBoxStatus2.Image = My.Resources.Orange_Information
ElseIf (ListBox1.Items(2)) = TextBoxTicketID.Text Then
PictureBoxStatus3.Image = My.Resources.Orange_Information
End If
TextBoxTicketID.Text = ""
Call CheckPDFs()
以下是我目前正在检查是否已创建 PDF 的方式。
最终,在 msgbox 所在的私有子中,我想将 ID 旁边的图标更新为绿色复选标记,表示 PDF 已创建。
Public Sub CheckPDFs()
Dim x As Integer
Dim Watcher As New FileSystemWatcher()
Watcher.Path = "C:\Temp\"
Watcher.NotifyFilter = (NotifyFilters.Attributes)
Watcher.Filter = ListBox1.Items(x) + ".pdf"
AddHandler Watcher.Changed, AddressOf OnChanged
Watcher.EnableRaisingEvents = True
End Sub
Private Shared Sub OnChanged(source As Object, e As FileSystemEventArgs)
Dim x As Integer
' Specify what is done when a file is created.
MsgBox("File has been created!")
End Sub
当我运行测试时,我创建了两个输入到列表框中的唯一 ID。
问题 1:我通过输入的第一个 ID 手动创建 PDF,没有任何触发。在触发 msgbox 之前,我必须将 PDF 从目录中移出并移回。
问题 2:如果我输入了两个 ID,我手动创建了第二个 ID,没有任何触发。我将文件移出目录并重新移入,仍未触发。
为什么在触发之后输入的任何 ID 之前需要存在第一个 ID?
编辑
这里有两个屏幕截图,在用户输入之前和之后,显示输入的 ID 和图标。