How to find out if a control is in a tabbed dock group in WinForms Docking Manager?
Dock group
There is no direct API to determine the tabbed state, but this can be easily accomplished by accessing some of the internal docking windows classes. The following code tests whether the dockable control ’listBox1’ is in a tabbed dock group, and if so, lists out all controls in that group.
C#
Trace.Assert(this.dockingManager1.GetEnableDocking(this.listBox1));
Syncfusion.Windows.Forms.Tools.DockHost dhost = this.listBox1.Parent as Syncfusion.Windows.Forms.Tools.DockHost;
Syncfusion.Windows.Forms.Tools.DockHostController dhc = dhost.InternalController as
Syncfusion.Windows.Forms.Tools.DockHostController;
if(dhc.ParentController is Syncfusion.Windows.Forms.Tools.DockTabController)
{
Trace.WriteLine("Control is docked as a tab");
Syncfusion.Windows.Forms.Tools.DockTabControl docktab = (dhc.ParentController as
Syncfusion.Windows.Forms.Tools.DockTabController).TabControl;
foreach(DockTabPage tabpage in docktab.TabPages)
{
Control siblingcontrol = tabpage.dhcClient.HostControl.Controls[0];
Trace.WriteLine(siblingcontrol.Name);
}
}
VB
Trace.Assert(Me.dockingManager1.GetEnableDocking(Me.listBox1))
Dim dhost As Syncfusion.Windows.Forms.Tools.DockHost = Me.listBox1.Parent as
Syncfusion.Windows.Forms.Tools.DockHost
Dim dhc As Syncfusion.Windows.Forms.Tools.DockHostController = dhost.InternalController as
Syncfusion.Windows.Forms.Tools.DockHostController
If TypeOf dhc.ParentController Is Syncfusion.Windows.Forms.Tools.DockTabController Then
Trace.WriteLine("Control is docked as a tab")
Dim docktab As Syncfusion.Windows.Forms.Tools.DockTabControl = (dhc.ParentController as
Syncfusion.Windows.Forms.Tools.DockTabController).TabControl
Dim tabpage As DockTabPage
For Each tabpage In docktab.TabPages
Dim siblingcontrol As Control = tabpage.dhcClient.HostControl.Controls(0)
Trace.WriteLine(siblingcontrol.Name)
Next
End If