FileSystemWatcher show form on file create

Hey Experts,

I have been smashing my head into a wall the last week trying to figure this out. I am sure it will turn out being something simple.

First off, I am using VB.NET from VS 2005.

I am monitoring a directory for a specific file type, lets say they are txt files.
On creation I want to create an instance of form2.
set vars on it, then show it.

so I have the following which fires  when the watcher detects a change
Private Sub logchange(ByVal source As Object, ByVal e As _
        If e.ChangeType = IO.WatcherChangeTypes.Changed Then

            '  MsgBox("File " & e.FullPath & _
            '                        " has been modified" & vbCrLf)
        End If
        If e.ChangeType = IO.WatcherChangeTypes.Created Then

            ' MsgBox("File " & e.FullPath & _
            '                        " has been created" & vbCrLf)
            Dim myFrom as new Form2
            myForm.label1.text="SOME VALUE"

        End If
        If e.ChangeType = IO.WatcherChangeTypes.Deleted Then

            'MsgBox("File " & e.FullPath & _
            '                         " has been deleted" & vbCrLf)
        End If
    End Sub

This works great when I just use message boxes but when attempt to display the form, it appears then kinda locks in place creating a white backround.

I understand that the watcher is running on another thread, and understand the concept of invoke and delegates but I simply can not figure this out.
Who is Participating?
Try this

I using CLR2.0 new feature (No multi form pop up)

Form2.Text = "Create"

Instead of

Dim myform as new form2
myform.Text = "Create"

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        With Me.FileSystemWatcher1
            .EnableRaisingEvents = True
            .Path = "C:\Temp"
            .Filter = "*.*"
        End With

    End Sub

    Private Sub FileSystemWatcher1_Changed(ByVal sender As System.Object, ByVal e As System.IO.FileSystemEventArgs) _
    Handles FileSystemWatcher1.Changed, FileSystemWatcher1.Created, FileSystemWatcher1.Deleted

        Select Case e.ChangeType
            Case IO.WatcherChangeTypes.Created
                Form2.Text = "Create"
            Case IO.WatcherChangeTypes.Deleted
                Form2.Text = "Delete"
            Case IO.WatcherChangeTypes.Renamed
                Form2.Text = "Rename"
        End Select

    End Sub

End Class
I'm not sure if you copied-pasted directly from your code. You dimension 'myFrom' but are setting on 'myForm'
Dim myFrom as new Form2


You may try also - myForm.ShowDialog() - so then it'll be modal - like a message box.


kevin1265Author Commented:
Eric you the man, you have no idea how much this helped.

Bchoor thanks this works as well however it freezes my GUI.

Thanks for the quick response.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.