私のリストボックスの最初の項目が存在するまで、ファイルシステムウォッチャーはトリガーされません。ただし、リストボックスにリストされているファイルはその順序では作成されません。
さらに説明...
テキストボックスに入力された値を取得し、その値をリストボックスに追加して、画像ボックスでその値の横にあるアイコンを変更しています。アイコンは、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
テストを実行すると、リストボックスに入力された 2 つの一意の ID が作成されました。
問題 1: 最初に入力した ID で手動で PDF を作成しましたが、何もトリガーされません。PDFをディレクトリから移動して、msgboxをトリガーする前に戻す必要があります。
問題 2: 2 つの ID を入力した場合、2 番目の ID を手動で作成すると、何もトリガーされません。ファイルをディレクトリから移動して戻しましたが、まだトリガーされていません。
その後に入力された ID をトリガーする前に、最初の ID が存在する必要があるのはなぜですか?
編集
これは、ユーザーが入力する前と入力した後の 2 つのスクリーンショットで、入力された ID とアイコンを示しています。