Skip to main content

Correct Way to Open a Windows Form in VB.NET

Few months ago I encounter a problem with my windows form bound using a DataSet. When I open the form the first time, it seems that everything is fine. But when I open it again the second time, the fields are become blank. This happens when you trigger the “PerformClick” of “BindingNavigator” under the Form Load event.

This is not actually the common mistake that I encounter. But maybe, you encounter this problem also if you are used with VB 6.0 before.

Here’s the code to open the windows form the correct way:

Dim SalesReturn As New frmSalesReturn With SalesReturn .InvoiceID = InvoiceID .ShowDialog() End With

The above code is just one of the examples on my POS in VB.NET version. In the line:

Dim SalesReturn As New frmSalesReturn

You have to declare the form as new instance. Because in VB.NET you cannot directly refer to a form like this:

With frmSalesReturn ‘your statement here End With

So this means that every time you’d like to open your form, you have to use the “New” keyword to free it from memory when you close the form.

In VB 6.0 we can set the form to “Nothing” in the Form_Unload event. But this technique is not supported now in VB.NET.

I just want to share this to you because I mistakenly refer the wrong variable a few days ago in my code. Instead of SalesReturn I declare the frmSalesReturn in the “With” statement making the variable SalesReturn useless.

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.


1. Re-scan downloaded files using your personal virus checker before using it.
2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.

Add new comment

This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.