Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 208
  • Last Modified:

Can Not Close Second Child Form

Hi,

I call 2nd Child Form from 1st Child Form.
At 1st Child Form Closing,  I try to close 2nd Child Form using:

   With frmSecondChild
            .Close()
            .Dispose()
        End With

But it does not close the form.

Why is it?

Thank you.
0
emi_sastra
Asked:
emi_sastra
  • 5
  • 4
1 Solution
 
Mike TomlinsonMiddle School Assistant TeacherCommented:
Is frmSecondChild the Type of the Form?...or is this a variable?

In other words, are you using the "default instance" of the form or creating an instance manually?

I'm guessing that your showing an instance of the form using the "new" keyword but closing the default instance.

Show us some code on how you open the second child form...
0
 
emi_sastraAuthor Commented:
Please my code

Thank you.


If ERV_Global.Form_Active("frmMISBROWSELABARUGI", Me) Then
 
            With frmMISBROWSELABARUGI
                .strMonth = txtFromMonth.Text
                .strYear = txtFromYear.Text
                .strAccNo = dgvHeader.CurrentRow.Cells("AccNo").Value.ToString.Trim
                .strAccount = .strAccNo & ERV_Global.glbComboSeparator & dgvHeader.CurrentRow.Cells("Name").Value.ToString.Trim
                .lblTotaBulan.Text = txtTotalMonth.Text
 
                .Open_Data()
            End With
        Else
            Dim frmMISBROWSELABARUGI As New frmMISBROWSELABARUGI
 
            With frmMISBROWSELABARUGI
                .strMonth = txtFromMonth.Text
                .strYear = txtFromYear.Text
                .strAccNo = dgvHeader.CurrentRow.Cells("AccNo").Value.ToString.Trim
                .strAccount = .strAccNo & ERV_Global.glbComboSeparator & dgvHeader.CurrentRow.Cells("Name").Value.ToString.Trim
                .lblTotaBulan.Text = txtTotalMonth.Text
 
                .Show(Me)
            End With
 
        End If

Open in new window

0
 
JackOfPHCommented:
The answer will depend on how you create the instance of the form.

If you create the form this way

Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click

Dim frmSecondChild as new Form2 '<-- First instance...

frmSecondChild.Show

End Sub

Then you try to close it this way in the form1 closing event then...

Dim frmSecondChild as new form2 '<-- Second Instance...

With frmSecondChild
            .Close()
            .Dispose()
        End With


You really can't close the form, becuase you create two instance of form2.


So to close the form do this instead....


Private frmSecondChild as form2

Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click

frmSecondChild = new Form2 '<-- First instance...

frmSecondChild.Show

End Sub

Then on the form1Closing event do this:


With frmSecondChild
            .Close()
            .Dispose()
End With
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
JackOfPHCommented:
but if you still want to stick with your code.... you can do this...


With System.Windows.Forms.Application.OpenForms("frmMISBROWSELABARUGI")
       .Close()
       .Dispose()
End With
0
 
emi_sastraAuthor Commented:
Hi JackOfPH,

Please see my code above.

What's wrong with it?

Thank you.
0
 
emi_sastraAuthor Commented:
Hi JackOfPH,

It works.

Thank you very much for your help.
0
 
JackOfPHCommented:
Dim frmMISBROWSELABARUGI As New frmMISBROWSELABARUGI

This line of code...

As I have said you where only creating an instance of the form that only accessible to that particular Function or Sub.
0
 
emi_sastraAuthor Commented:
Is there other way to create it, thus it could be recognize by other sub?
How to declare the form ?

Thank you.
0
 
emi_sastraAuthor Commented:
I see your comment, using:

Private frmSecondChild as form2

Which one is better?

Using  the above code or With System.Windows.Forms.Application.OpenForms("frmMISBROWSELABARUGI")

Thank you.
0
 
JackOfPHCommented:
There are two possible way,

The first way is the one I gave you...

System.Windows.Forms.Application.OpenForms("frmMISBROWSELABARUGI")

then the second way is to declare a Private variable.
0

Featured Post

New feature and membership benefit!

New feature! Upgrade and increase expert visibility of your issues with Priority Questions.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now