Throw this code in a MDI form and see if it helps out at all. Private Sub MDIParent1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim ChildForm1 As New System.Windows.Forms.Form Dim btnButton1 As New Button Dim ChildForm2 As New System.Windows.Forms.Form Dim btnButton2 As New Button ChildForm1.Text = "Form1" ChildForm2.Text = "Form2" btnButton1.Text = "I Control 2" btnButton2.Text = "I Control 1" ChildForm1.MdiParent = Me ChildForm1.Controls.Add(btnButton1) ChildForm1.Show() ChildForm1.Name = "Form1" ChildForm2.MdiParent = Me ChildForm2.Controls.Add(btnButton2) ChildForm2.Show() ChildForm2.Name = "Form2" AddHandler btnButton1.Click, AddressOf button_click AddHandler btnButton2.Click, AddressOf button_click End Sub Sub button_click(ByVal sender As Object, ByVal e As EventArgs) For Each frm As Form In Me.MdiChildren If frm.Name <> sender.parent.Name Then If frm.Visible Then frm.Hide() Else frm.Show() End If End If Next End Sub