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:

  1.         Dim SalesReturn As New frmSalesReturn
  2.  
  3.         With SalesReturn
  4.             .InvoiceID = InvoiceID
  5.  
  6.             .ShowDialog()
  7.         End With

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

  1. 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:

  1. With frmSalesReturn
  2.         ‘your statement here
  3. 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.

Add new comment