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


How to dispose of a form in the load event?

bobdowdy asked
Medium Priority
Last Modified: 2008-03-10
I have a form that, in the load procedure, tries to find a file.  If it finds it, fine, but if it can't locate the file, I want an error displayed, and the form to never appear.

In my FormLoad procedure, I have :

if filenotfound then

this results in :
"cannot call dispose while doing createhandle"

Any ideas? Thanks

Watch Question

Hi there

You need to use an intermediate class checks for the existence of the file and if there then it loads your form else simly returns to the calling class.

Something along the lines of

Class Form1

... in here you get to the point to load the next form, but instead call a different class, Say clsFileExists

If clsFileExists.IsFileThere then
     ... load the form you are wanting
End If

The class clsFileExists can be simply

Class clsFileExists

Public Function IsFileThere(byval fileName as string) As Boolean

... code to check for file and return true / false

End Function

End Class

HTH  :)

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

Ask the Experts

You could simply close the form...  Which if you then Dispose of the form from the calling class will Dispose it...


If FileNotFound Then
    Exit Sub
End If

In calling sub:

dim frmName As New frmName

Hope that helps...


It is not possible to just call close inside the FormLoad event either.  You will see the same answer.    CubixSoftware's approach is a good way to handle this.    As an alternative to using a helper class you could just add a function to your form that returns whether or not your file exists.  You could then call that before calling your .ShowDialog on it and just never show the form.  

In your Form1 Class

Public Function FileExists() as boolean
  Return True/False
End Sub

From your calling sub:
Dim frmName as new frmName
If frmName.FileExists() Then
End If

Hope that helps.  I ran into this same problem about 2 months ago.  
Mike TomlinsonHigh School Computer Science, Computer Applications, Digital Design, and Mathematics Teacher
Top Expert 2009

Calling Me.Close() from inside the MyBase.Load() event worked for me...

I wonder if it depends on how much is going on in the Form?? or in my situation my forms are MDI children.  I wonder if that causes problems.   I just tried the .close inside of my load and I received an error saying "Cannot call Close() while doing CreateHandle()".

It is interesting that it works in some applications and not others.
...are we done here?


Yup - were done - implemented CUBIX solution - all is fine - thanks to all we partiicpated !
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.