Solved

Can Not Close Second Child Form

Posted on 2009-07-05
10
201 Views
Last Modified: 2012-05-07
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
Comment
Question by:emi_sastra
  • 5
  • 4
10 Comments
 
LVL 85

Expert Comment

by:Mike Tomlinson
Comment Utility
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
 
LVL 1

Author Comment

by:emi_sastra
Comment Utility
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
 
LVL 15

Expert Comment

by:JackOfPH
Comment Utility
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
 
LVL 15

Accepted Solution

by:
JackOfPH earned 500 total points
Comment Utility
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
 
LVL 1

Author Comment

by:emi_sastra
Comment Utility
Hi JackOfPH,

Please see my code above.

What's wrong with it?

Thank you.
0
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 1

Author Comment

by:emi_sastra
Comment Utility
Hi JackOfPH,

It works.

Thank you very much for your help.
0
 
LVL 15

Expert Comment

by:JackOfPH
Comment Utility
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
 
LVL 1

Author Comment

by:emi_sastra
Comment Utility
Is there other way to create it, thus it could be recognize by other sub?
How to declare the form ?

Thank you.
0
 
LVL 1

Author Comment

by:emi_sastra
Comment Utility
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
 
LVL 15

Expert Comment

by:JackOfPH
Comment Utility
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

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

I think the Typed DataTable and Typed DataSet are very good options when working with data, but I don't like auto-generated code. First, I create an Abstract Class for my DataTables Common Code.  This class Inherits from DataTable. Also, it can …
If you need to start windows update installation remotely or as a scheduled task you will find this very helpful.
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now