You wrote that you do not want to use a Tabcontrol because you don't want the tab headers to be visible. However a Tabcontrol is pretty ideal for this kind of application. You can hide the tab headers by using this derived control instead.
Public Class TablessControl
Inherits System.Windows.Forms.TabControl
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
' Hide tabs by trapping the TCM_ADJUSTRECT message
If (m.Msg = Convert.ToInt32("0x1328", 16) And Not DesignMode) Then
m.Result = CType(1, IntPtr)
Else
MyBase.WndProc(m)
End If
End Sub
End Class
Disclaimer: This code is from another answer on SO from some time ago and not my code. It works great however and I will try to find the corresponding answer.
Source: Hide Tab Header on C# TabControl
Put the code in your project and compile once. You will then have the control in your toolbox and can use it exactly like the normal tab control. At runtime the header buttons are hidden automatically.