I have two forms in my application, one form is to create new connections, the other is the main form which holds the menu that will carry the connection names.

When i create a new connection under frmNewConnection form and try to click on the menu item that’s generated, it wont display the Test message like it does when i reopen the program.
In the main form i have the following public sub.
frmMain which is the main form
Public Sub Connect_SubMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs)
Messagebox.Show("Test")
End Sub
That code never gets executed unless i restart my application then it works fine when i click on the newly generated menu item. But if i was to load the application and click on the “New Connection” Menu item and create the new connection then try to click it under the “Connections” menu then nothing happens, i don’t get the “Test” Message box.
I have the following code under the frmNewConnection Accept button, which saves the name of the connection to the “Connections” menu.
frmMain.menuConnections.DropDownItems.Add(ConnectionName, Nothing, AddressOf frmMain.Connect_SubMenuItem_Click) ' save to menu
I also have a version of that code that executes on frmMain_load():
menuConnections.DropDownItems.Add(finalData(1).ToString, Nothing, AddressOf Connect_SubMenuItem_Click) ' save to menu
My Question here is, why won’t the Test message appear when a new menu item is generated while in the program but it does show when i close the program and i re-open it..
If you are modifying the controls of one form from another form then you are probably going about the whole thing wrong.
First thing you need to do is take control of your program startup. VB hides this sometimes. This will allow you to capture your form variable. Then, consider refactoring a bit.
Some VB.NET psuedo-code (I apologize for any C# that leaks in here):
If you don’t want to use the domain-object events for updates that is up to you, but the first part of the sample shows how to capture the startup form into a variable that you can then use in your program code.