Open/Close Forms: Has anybody seen this problem?
-
I show/hide different forms by defining the forms in a module:
Public Class formLibrary
Public Shared frmMain As Form Public Shared frmComponents As Form Public Shared frmNewProject As Form ....
End Class
Then I use the following to close the current form and open another:
Dim newFrmMain As New frmMain formLibrary.frmNewProject.Hide() newFrmMain.ShowDialog()
This is working perfect for all forms in my project except one. When I attempt to open the
frmNewProject
, I get this error:An unhandled exception of type 'System.NullReferenceException' occurred in Mule! Data Management Tool.exe
Additional information: Object reference not set to an instance of an object...on this line of code:
formLibrary.frmNewProject.Hide()
Has anybody ever experienced a problem like this? Thanks Brad -
I show/hide different forms by defining the forms in a module:
Public Class formLibrary
Public Shared frmMain As Form Public Shared frmComponents As Form Public Shared frmNewProject As Form ....
End Class
Then I use the following to close the current form and open another:
Dim newFrmMain As New frmMain formLibrary.frmNewProject.Hide() newFrmMain.ShowDialog()
This is working perfect for all forms in my project except one. When I attempt to open the
frmNewProject
, I get this error:An unhandled exception of type 'System.NullReferenceException' occurred in Mule! Data Management Tool.exe
Additional information: Object reference not set to an instance of an object...on this line of code:
formLibrary.frmNewProject.Hide()
Has anybody ever experienced a problem like this? Thanks BradYour form declaration is this:
Public **Shared** frmNewProject As Form
And you recieve an unhandled exception here:formLibrary.frmNewProject.Hide()
The reason is because .Hide is not a shared sub procedure of the Forms Class, therefore you are required to instantiate a Form object instance. For instance:Public frmNewProject As **New** Form
-
Your form declaration is this:
Public **Shared** frmNewProject As Form
And you recieve an unhandled exception here:formLibrary.frmNewProject.Hide()
The reason is because .Hide is not a shared sub procedure of the Forms Class, therefore you are required to instantiate a Form object instance. For instance:Public frmNewProject As **New** Form
-
Your form declaration is this:
Public **Shared** frmNewProject As Form
And you recieve an unhandled exception here:formLibrary.frmNewProject.Hide()
The reason is because .Hide is not a shared sub procedure of the Forms Class, therefore you are required to instantiate a Form object instance. For instance:Public frmNewProject As **New** Form
Thanks. That works (anyway it gets me through the code with no exception). But now
frmNewProject
does not hide. I can't select it but it is still visible. Any ideas? Thanks Brad -
Thanks. That works (anyway it gets me through the code with no exception). But now
frmNewProject
does not hide. I can't select it but it is still visible. Any ideas? Thanks Brad -
Do you have a code sample of what you have changed and how you are using .Hide? And what do you mean when you say Brad Fackrell wrote: I can't select it but it is still visible.
The class is where my forms are declared:
Public Class formLibrary
Public Shared frmOpenProject As New Form Public Shared frmMain As Form Public Shared frmScoringJustification As New Form Public Shared frmProjectName As New Form Public Shared frmDatesAndLocation As New Form Public Shared frmPOC As New Form Public Shared frmArticulation As New Form Public Shared frmCollectorsAndNotes As New Form Public Shared frmComponents As New Form Public Shared frmPrint As New Form Public Shared frmNewProject As New Form
End Class
The code that I use to Hide and Show:
Dim newFrmMain As New frmMain
formLibrary.frmNewProject.Hide()
newFrmMain.ShowDialog()When I execute this,
frmMain
loads and is active.frmNewProject
is still visible (behindfrmMain
,frmMain
is a small form; about 30% of the screen) but I cannot select it or any of it's controls. Thanks for your help. -
The class is where my forms are declared:
Public Class formLibrary
Public Shared frmOpenProject As New Form Public Shared frmMain As Form Public Shared frmScoringJustification As New Form Public Shared frmProjectName As New Form Public Shared frmDatesAndLocation As New Form Public Shared frmPOC As New Form Public Shared frmArticulation As New Form Public Shared frmCollectorsAndNotes As New Form Public Shared frmComponents As New Form Public Shared frmPrint As New Form Public Shared frmNewProject As New Form
End Class
The code that I use to Hide and Show:
Dim newFrmMain As New frmMain
formLibrary.frmNewProject.Hide()
newFrmMain.ShowDialog()When I execute this,
frmMain
loads and is active.frmNewProject
is still visible (behindfrmMain
,frmMain
is a small form; about 30% of the screen) but I cannot select it or any of it's controls. Thanks for your help.I'm not quite sure why your frmNewProject would still be visible...but the reason why you cannot select it or any of it's controls is because you are showing your frmMain as modal. Brad Fackrell wrote: newFrmMain.ShowDialog() When you use .ShowDialog, you are displaying your form modal, meaning you can not access any other form until you close your frmMain. Going back to your frmNewProject, where are you showing the form in code? If .Hide is not used, is it possible to .Close the form? Just to make sure it is accessing that line of code. I did a quick test with your class and placed a .Show and .Hide in two button events. It worked with no problems...so in theory, it should be working for you?
-
I'm not quite sure why your frmNewProject would still be visible...but the reason why you cannot select it or any of it's controls is because you are showing your frmMain as modal. Brad Fackrell wrote: newFrmMain.ShowDialog() When you use .ShowDialog, you are displaying your form modal, meaning you can not access any other form until you close your frmMain. Going back to your frmNewProject, where are you showing the form in code? If .Hide is not used, is it possible to .Close the form? Just to make sure it is accessing that line of code. I did a quick test with your class and placed a .Show and .Hide in two button events. It worked with no problems...so in theory, it should be working for you?
Anonymous wrote: where are you showing the form in code? I have a
btnClick
that calls:Dim newFrmMain As New frmMain
formLibrary.frmNewProject.Hide()
newFrmMain.ShowDialog()...nothing else in the
btnClick
sub. Anonymous wrote: If .Hide is not used, is it possible to .Close the form? No. I think it goes back to what you said aboutnewFrmMain.ShowDialog()
only allowingnewFrmMain
to be accessable. In fact, after removingformLibrary.frmNewProject.Hide(),
it seems like that line of code is doing absolutely nothing. I've gone throughfrmNewProject
with a "fine tooth comb" to see if there is anything that could be making it 'hang'...no luck finding anything. -
Anonymous wrote: where are you showing the form in code? I have a
btnClick
that calls:Dim newFrmMain As New frmMain
formLibrary.frmNewProject.Hide()
newFrmMain.ShowDialog()...nothing else in the
btnClick
sub. Anonymous wrote: If .Hide is not used, is it possible to .Close the form? No. I think it goes back to what you said aboutnewFrmMain.ShowDialog()
only allowingnewFrmMain
to be accessable. In fact, after removingformLibrary.frmNewProject.Hide(),
it seems like that line of code is doing absolutely nothing. I've gone throughfrmNewProject
with a "fine tooth comb" to see if there is anything that could be making it 'hang'...no luck finding anything.Try commenting out the
newFrmMain.ShowDialog()
...does your code execute theformLibrary.frmNewProject.Hide()
? Give the debugger a try as well, and step into that line of code. It should be executing. Also, where did you place the code to display the frmNewProject form? (formLibrary.frmNewProject.Show()
)? I am assuming you did show the frmNewProject...otherwise, the lineformLibrary.frmNewProject.Hide()
will execute, but you won't have a form to hide, therefore appearing like it did absolutely nothing. -
Try commenting out the
newFrmMain.ShowDialog()
...does your code execute theformLibrary.frmNewProject.Hide()
? Give the debugger a try as well, and step into that line of code. It should be executing. Also, where did you place the code to display the frmNewProject form? (formLibrary.frmNewProject.Show()
)? I am assuming you did show the frmNewProject...otherwise, the lineformLibrary.frmNewProject.Hide()
will execute, but you won't have a form to hide, therefore appearing like it did absolutely nothing.Anonymous wrote: Try commenting out the newFrmMain.ShowDialog()...does your code execute the formLibrary.frmNewProject.Hide() No. It stays visible and active. Anonymous wrote: Give the debugger a try as well It appears to execute just like any other
.Hide
that is working properly. The debugger doesn't do much at that line. Is there something specific that I can look for? Anonymous wrote: where did you place the code to display the frmNewProject form? (formLibrary.frmNewProject.Show())? In the form that is displayed prior tofrmNewProject
I have abtnClick
with this:Dim newFrmNewProject As New frmNewProject
formLibrary.frmOpenProject.Hide()
newFrmNewProject.ShowDialog()Strange thing that I have noticed, after executing the
btnClick
to hidefrmNewProject
and showfrmMain
, I can closefrmMain
using the 'X' in the upper right hand corner (frmMain_Closed
) but the application stays running andfrmNewProject
is once again active. -
Anonymous wrote: Try commenting out the newFrmMain.ShowDialog()...does your code execute the formLibrary.frmNewProject.Hide() No. It stays visible and active. Anonymous wrote: Give the debugger a try as well It appears to execute just like any other
.Hide
that is working properly. The debugger doesn't do much at that line. Is there something specific that I can look for? Anonymous wrote: where did you place the code to display the frmNewProject form? (formLibrary.frmNewProject.Show())? In the form that is displayed prior tofrmNewProject
I have abtnClick
with this:Dim newFrmNewProject As New frmNewProject
formLibrary.frmOpenProject.Hide()
newFrmNewProject.ShowDialog()Strange thing that I have noticed, after executing the
btnClick
to hidefrmNewProject
and showfrmMain
, I can closefrmMain
using the 'X' in the upper right hand corner (frmMain_Closed
) but the application stays running andfrmNewProject
is once again active.Brad Fackrell wrote: Dim newFrmNewProject As New frmNewProject formLibrary.frmOpenProject.Hide() newFrmNewProject.ShowDialog() Does this code work in the form displayed prior to frmNewProject?? If that works, then you have a very strange situation as it is the exact same code when you are attempting to display your newFrmMain. But...I think the problem is the following: In your class code you have:
Public Class formLibrary Public Shared frmOpenProject As New Form Public Shared frmMain As Form Public Shared frmScoringJustification As New Form Public Shared frmProjectName As New Form Public Shared frmDatesAndLocation As New Form Public Shared frmPOC As New Form Public Shared frmArticulation As New Form Public Shared frmCollectorsAndNotes As New Form Public Shared frmComponents As New Form Public Shared frmPrint As New Form **Public Shared frmNewProject As New Form** End Class
Take note of the bold line in your class. Then in your btnClick event you placed:Dim newFrmMain As New frmMain **formLibrary.frmNewProject.Hide()** newFrmMain.ShowDialog()
Again take note of the bold. Then in your previous form when you display your frmNewProject you had:**Dim newFrmNewProject As New frmNewProject** formLibrary.frmOpenProject.Hide() **newFrmNewProject.ShowDialog()**
Now if I am correct, when you are attempting to hide your frmNewProject using this line of code (in your btnClick):**formLibrary.frmNewProject.Hide()**
It is executing...BUT it is hiding the frmNewProject in your fromLibrary class...which hasn't actually been displayed to the user. Thus appearing to do abosulutely nothing. How does that work? You are creating a new (local) instance of frmNewProject and then using the .ShowDialog to display it. So, you can test my theory by changing what you had in your previous code:**Dim newFrmNewProject As New frmNewProject** formLibrary.frmOpenProject.Hide() **newFrmNewProject.ShowDialog()**
Try changing it to:'Dim newFrmNewProject As New frmNewProject **formLibrary.frmNewProject.ShowDialog()** 'newFrmNewProject.ShowDialog()
I know I jumped around alot...but the main idea is that in your code you are attempting to .Hide a form that hasn't actually been displayed to the user. This is because theformLibrary.frmNewProject
andnewFrmNewProject
are two diffe -
Brad Fackrell wrote: Dim newFrmNewProject As New frmNewProject formLibrary.frmOpenProject.Hide() newFrmNewProject.ShowDialog() Does this code work in the form displayed prior to frmNewProject?? If that works, then you have a very strange situation as it is the exact same code when you are attempting to display your newFrmMain. But...I think the problem is the following: In your class code you have:
Public Class formLibrary Public Shared frmOpenProject As New Form Public Shared frmMain As Form Public Shared frmScoringJustification As New Form Public Shared frmProjectName As New Form Public Shared frmDatesAndLocation As New Form Public Shared frmPOC As New Form Public Shared frmArticulation As New Form Public Shared frmCollectorsAndNotes As New Form Public Shared frmComponents As New Form Public Shared frmPrint As New Form **Public Shared frmNewProject As New Form** End Class
Take note of the bold line in your class. Then in your btnClick event you placed:Dim newFrmMain As New frmMain **formLibrary.frmNewProject.Hide()** newFrmMain.ShowDialog()
Again take note of the bold. Then in your previous form when you display your frmNewProject you had:**Dim newFrmNewProject As New frmNewProject** formLibrary.frmOpenProject.Hide() **newFrmNewProject.ShowDialog()**
Now if I am correct, when you are attempting to hide your frmNewProject using this line of code (in your btnClick):**formLibrary.frmNewProject.Hide()**
It is executing...BUT it is hiding the frmNewProject in your fromLibrary class...which hasn't actually been displayed to the user. Thus appearing to do abosulutely nothing. How does that work? You are creating a new (local) instance of frmNewProject and then using the .ShowDialog to display it. So, you can test my theory by changing what you had in your previous code:**Dim newFrmNewProject As New frmNewProject** formLibrary.frmOpenProject.Hide() **newFrmNewProject.ShowDialog()**
Try changing it to:'Dim newFrmNewProject As New frmNewProject **formLibrary.frmNewProject.ShowDialog()** 'newFrmNewProject.ShowDialog()
I know I jumped around alot...but the main idea is that in your code you are attempting to .Hide a form that hasn't actually been displayed to the user. This is because theformLibrary.frmNewProject
andnewFrmNewProject
are two diffeYes, that makes sense. I appreciate all of your help on this. Brad