Note that there are some explanatory texts on larger screens.

plurals
  1. POEven though form3 is created from form2, why it is not disposed on form2 close?
    primarykey
    data
    text
    <p><strong>I need your help to clarify whether form work exactly like object?</strong></p> <p>If I create an object,obj2, from another object,obj1. the obj2 will be disposed on obj1 dispose.</p> <p>However it is not so with forms. check out the case &amp; pseudo code give below.</p> <p>I have three forms; form1, form2 &amp; form2.</p> <p>form1 is the startup form. form1 will create &amp;s how a form2 and from2 will create &amp; show form3 using a button in each form.</p> <p><strong><em>if I close form2, after opening all the 3 forms, I am able to work in form1 and form3.</em></strong></p> <p><strong>my question is even though form3 is created from form2, why it is not disposed on form2 close?</strong></p> <p><strong>Form1</strong></p> <hr> <pre><code>Public Class Form1 Private Sub cmdOpenForm2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOpenForm2.Click Dim frm As New Form2 With frm ''/.MdiParent = frmMain .Show() .BringToFront() End With End Sub Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed ''//frmMain.tsStatus.Text = "Form1 disposed" End Sub End Class </code></pre> <p><strong>Form2</strong></p> <hr> <pre><code>Public Class Form2 Private Sub cmdRandomColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRandomColor.Click Randomize() Label1.ForeColor = Color.FromArgb(Rnd() * 255, Rnd() * 255, Rnd() * 255, Rnd() * 255) End Sub Private Sub Form2_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed frmMain.tsStatus.Text = "Form2 disposed" End Sub Private Sub cmdOpenForm3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOpenForm3.Click Dim frm As New Form3 With frm ''//.MdiParent = frmMain .Show() .BringToFront() End With End Sub End Class </code></pre> <p><strong>Form3</strong></p> <hr> <pre><code>Public Class Form3 Private Sub cmdRandomColor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRandomColor.Click Randomize() Label1.ForeColor = Color.FromArgb(Rnd() * 255, Rnd() * 255, Rnd() * 255, Rnd() * 255) End Sub Private Sub Form3_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed frmMain.tsStatus.Text = "Form3 disposed" End Sub End Class </code></pre> <p>Any Help will be greatly appreciated.</p> <p><strong>EDIT</strong> thank you all for the solution</p> <p>Sorry to mention, <strong>I am not looking for a solution how to do dispose form3 on form2 close</strong>. </p> <p>my interest is what is happening behind... Is there any possibility that form3 instance created from2 get GC collect and i get a memory error. </p> <p>since i am getting protect memory access exception in my real application, which is not properly designed, and it too big to refactor now.</p> <p>my question is <strong>where the form3 instance created?</strong> Is it in Form2 instance or somewhere else. since i can able to access form3 instance after form2 disposed. i doubt it is created in somewhere else</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload