Category / Section
How to find out if a control is in a tabbed dock group in WinForms Docking Manager?
1 min read
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