T
theintrepidfox
Dear Group
I wonder if you can help me with the following. I have a form(Form2)
that contains a tabcontrol. If I click 'Tab2' Form3 should be displayed
and 'Form2' closed. The instruction to close Form2 is in the Load event
of Form3 but it actually doesn't matter where I put it. Every time I
get this error:
An unhandled exception of type 'System.ObjectDisposedException'
occurred in system.windows.forms.dll
Additional information: Cannot access a disposed object named
"TabControl".
Interestingly, If I have a button on Form3 to close the Form, Form2
closes just fine. However I want to close Form2 when Form3 has loaded.
Also, if I place a button on Form to to open Form3 and don't use the
SelectedIndexCHanged TabControlEvent, I also don't get this error. It's
almost as it's looking for the TabControl when the error comes up.
clsForms is just to keep track of my forms instances.
Any ideas. Please let me know.
Thanks very much for your help and efforts and please accept my
apologies for posting all the code but thought it might help to
undertsand.
Martin
x-x-x--x-x-x-x-x-x-x-x-x- FORM1 START
Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim frm2 As New Form2
frm2.MdiParent = Me
frm2.Show()
clsForms.Form2 = frm2
End Sub
x-x-x--x-x-x-x-x-x-x-x-x- FORM1 END
x-x-x--x-x-x-x-x-x-x-x-x- FORM2 START
Private Sub TabControl1_SelectedIndexChanged(ByVal sender As
Object,
ByVal e As System.EventArgs) Handles
TabControl1.SelectedIndexChanged
Select Case TabControl1.SelectedTab.Name
Case "TabPage2"
Dim frm3 As New Form3
frm3.MdiParent = clsForms.Form1
frm3.Show()
clsForms.Form3 = frm3
End Select
x-x-x--x-x-x-x-x-x-x-x-x- FORM2 END
x-x-x--x-x-x-x-x-x-x-x-x- FORM3 START
Private Sub Form3_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
clsForms.Form2.Close()
End Sub
x-x-x--x-x-x-x-x-x-x-x-x- FORM3 END
x-x-x--x-x-x-x-x-x-x-x-x- clsForms START
Public Class clsForms
Private Shared frm1 As Form1
Private Shared frm2 As Form2
Private Shared frm3 As Form3
Public Shared Property Form1() As Form1
Get
Return frm1
End Get
Set(ByVal Value As Form1)
frm1 = Value
End Set
End Property
Public Shared Property Form2() As Form2
Get
Return frm2
End Get
Set(ByVal Value As Form2)
frm2 = Value
End Set
End Property
Public Shared Property Form3() As Form3
Get
Return frm3
End Get
Set(ByVal Value As Form3)
frm3 = Value
End Set
End Property
End Class
x-x-x--x-x-x-x-x-x-x-x-x- clsForms END
I wonder if you can help me with the following. I have a form(Form2)
that contains a tabcontrol. If I click 'Tab2' Form3 should be displayed
and 'Form2' closed. The instruction to close Form2 is in the Load event
of Form3 but it actually doesn't matter where I put it. Every time I
get this error:
An unhandled exception of type 'System.ObjectDisposedException'
occurred in system.windows.forms.dll
Additional information: Cannot access a disposed object named
"TabControl".
Interestingly, If I have a button on Form3 to close the Form, Form2
closes just fine. However I want to close Form2 when Form3 has loaded.
Also, if I place a button on Form to to open Form3 and don't use the
SelectedIndexCHanged TabControlEvent, I also don't get this error. It's
almost as it's looking for the TabControl when the error comes up.
clsForms is just to keep track of my forms instances.
Any ideas. Please let me know.
Thanks very much for your help and efforts and please accept my
apologies for posting all the code but thought it might help to
undertsand.
Martin
x-x-x--x-x-x-x-x-x-x-x-x- FORM1 START
Private Sub Form1_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim frm2 As New Form2
frm2.MdiParent = Me
frm2.Show()
clsForms.Form2 = frm2
End Sub
x-x-x--x-x-x-x-x-x-x-x-x- FORM1 END
x-x-x--x-x-x-x-x-x-x-x-x- FORM2 START
Private Sub TabControl1_SelectedIndexChanged(ByVal sender As
Object,
ByVal e As System.EventArgs) Handles
TabControl1.SelectedIndexChanged
Select Case TabControl1.SelectedTab.Name
Case "TabPage2"
Dim frm3 As New Form3
frm3.MdiParent = clsForms.Form1
frm3.Show()
clsForms.Form3 = frm3
End Select
x-x-x--x-x-x-x-x-x-x-x-x- FORM2 END
x-x-x--x-x-x-x-x-x-x-x-x- FORM3 START
Private Sub Form3_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles MyBase.Load
clsForms.Form2.Close()
End Sub
x-x-x--x-x-x-x-x-x-x-x-x- FORM3 END
x-x-x--x-x-x-x-x-x-x-x-x- clsForms START
Public Class clsForms
Private Shared frm1 As Form1
Private Shared frm2 As Form2
Private Shared frm3 As Form3
Public Shared Property Form1() As Form1
Get
Return frm1
End Get
Set(ByVal Value As Form1)
frm1 = Value
End Set
End Property
Public Shared Property Form2() As Form2
Get
Return frm2
End Get
Set(ByVal Value As Form2)
frm2 = Value
End Set
End Property
Public Shared Property Form3() As Form3
Get
Return frm3
End Get
Set(ByVal Value As Form3)
frm3 = Value
End Set
End Property
End Class
x-x-x--x-x-x-x-x-x-x-x-x- clsForms END