Hehe, no problem, Ivan... it can get pretty complex just showing the forms (which at first seems like something simple). Here's some generic code we use within our forms to show the child (MDI) forms.
'''
''' Show a form
''' '''
'''
Public Sub ShowForm(ByVal FormType As System.Type)
Me.ShowForm(FormType, Nothing)
End Sub
'''
''' Show a form
''' '''
'''
Public Sub ShowForm(ByVal FormType As System.Type, ByVal ParamArray Parameters() As Object)
'-- Establish Locals
Dim loForm As Object
Dim llFound As Boolean
'-- Make sure the form is not currently open
For Each loForm In Me.MdiChildren
If loForm.GetType() Is FormType Then
'-- The form is already shown, so just activate it
CType(loForm, Form).Activate()
llFound = True
End If
Next
If Not llFound Then
If Parameters Is Nothing Then
loForm = Activator.CreateInstance(FormType)
Else
loForm = Activator.CreateInstance(FormType, Parameters)
End If
With CType(loForm, MicroFour.StrataFrame.UI.Windows.Forms.BaseForm)
.MdiParent = Me
.Show()
End With
End If
End Sub
Say you have a child form called Form2, then to show it, you would call ShowForm(GetType(Form2)). If you need to pass parameters to the constructor, that's what the second overload is for.
Lemme know if you need this in C#... I can't remember your language (I know it's Portuguese, but I'm talking C#/VB

)