We help IT Professionals succeed at work.

We've partnered with Certified Experts, Carl Webster and Richard Faulkner, to bring you a podcast all about Citrix Workspace, moving to the cloud, and analytics & intelligence. Episode 2 coming soon!Listen Now


FileSystemWatcher show form on file create

kevin1265 asked
Medium Priority
Last Modified: 2010-04-23
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.
Watch Question

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.


Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts
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


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.
Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.


Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.