I have an Mdiform which with help of menustrip opens Form1.
From this form(Form1) I open another form i.e Form2.which I want also to be a part of my mdiform
I created property of mdiform and mapped it in my form2 when it loads.but still it does not become a part of mdiform.
Another problem is ,it keeps generating new instances of form2 whenever I again click button in form1,which is child of my mdiform.I want that only single instance of form2 should be visible.
I tried doing different ways but still generates new instances.
Can anyone explain this?
Thanks in advance

Recommended Answers

All 7 Replies

See if this helps to load Form2 from Form1, into the MDI Form.

Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        With Form2
            .MdiParent = myCoolMDIform '// set the MDI Parent for the Form.
            .Show() '// Load the Form.
        End With
    End Sub
End Class

AndAlso, this to Not create a new.instance of Form2.

Public Class Form2

    Private Sub Form2_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        e.Cancel = True '// .Cancel closing the Form.
        Me.Hide() '// ...and .Hide it.:)
    End Sub
End Class

Sorry this does not give soliution to my problem.
I have a form which is a mdiparent form Nmaed as ParentMDIForm.The menustrip in it
opens another form that is studentform which child of parentmdiform.
i hav set it as this.mdiparent=this that works fine.but A button in studentform opens
Form3 which is giving problem.
On button_clcik in studform
code is
Form3 f3=new Form3();
f3.MdiParent=ParentMdiForm ----this is a from name of mdi form ,gives error
f3.show()
I tried by creating property of parent form in studform
then set it as
f3.MdiParent=parentfrm---this also gives object reference not set as error

not getting it

>>Form3 f3=new Form3();
That looks entirely like C#.code and will "ALWAYS" give you an error in VB.NET.

AndAlso, as soon as you declare as "New Form3", you will "ALWAYS" load a new.instance of a Form.

So you need to check if already an instance of form is opened or not.. u can use singleton pattern.

Try something like this..

Private Shared _Instance As Form2 = Nothing
Public Shared Function Instance() As Boolean
        If _Instance Is Nothing OrElse _Instance.IsDisposed = True Then
            _Instance = New Form2
            Return False
        End If
        _Instance.BringToFront()
        Return True
    End Function

In calling form write this

If Form2.Instance = False Then
            Form2.ShowDialog()
        End If

Code has solved my problem for creating single instance of open form but the form2 still
does not become a part of an mdiparent form.I tried in different ways as I mentioned with code earlier in my post, could you pls check that?
Thanks

before calling u need to set

If Form2.Instance = False Then
' here u need to set its parent form.
            Form2.ShowDialog()
        End If
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.