Category / Section
How to maximize the Float Window while double clicking the header in WinForms Docking Manager?
2 mins read
Maximize the float window on double-click caption
Use OnCaptionDoubleClick event of DockingManager to maximize the FloatWindow while double clicking on Caption Bar. Use EnableDoubleClickOnCaption property of DockingManager to enable or disable the state transistion when double click on Caption Bar. The following code example demonstrates the same.
C#
public partial class Form1 : MetroForm { #region Constructor public Form1() { InitializeComponent(); this.dockingManager1.EnableDoubleClickOnCaption = true; this.dockingManager1.DockControlDeactivated += new DockActivationChangedEventHandler(dockingManager1_DockControlDeactivated); this.dockingManager1.DockControlActivated += new DockActivationChangedEventHandler(dockingManager1_DockControlActivated); dockingManager1.DockStateChanged += new DockStateChangeEventHandler(dockingManager1_DockStateChanged); this.dockingManager1.OnCaptionDoubleClick += new Syncfusion.Windows.Forms.Tools.DockMouseSelectionEventHandler(dockingManager1_OnCaptionDoubleClick); } #endregion #region Events //Triggers when control lost its focus. void dockingManager1_DockControlDeactivated(object sender, DockActivationChangedEventArgs arg) { if (dockingManager1.IsFloating(arg.Control)) dockingManager1.EnableDoubleClickOnCaption = false; } //Triggers when the control got the Focus. void dockingManager1_DockControlActivated(object sender, DockActivationChangedEventArgs arg) { if (!(dockingManager1.IsFloating(arg.Control))) dockingManager1.EnableDoubleClickOnCaption = true; else dockingManager1.EnableDoubleClickOnCaption = false; } //Triggers when the dock state changed(Dock state or Floating state or tabbed docking) void dockingManager1_DockStateChanged(object sender, DockStateChangeEventArgs arg) { if (dockingManager1.IsFloating(arg.Controls[0])) dockingManager1.EnableDoubleClickOnCaption = false; else dockingManager1.EnableDoubleClickOnCaption = true; } //Event triggeres on double click on the caption bar. void dockingManager1_OnCaptionDoubleClick(object sender, Syncfusion.Windows.Forms.Tools.DockControlMouseSelection arg) { if (this.dockingManager1.IsFloating(arg.Control)) { Control argctrl = arg.Control; if ((arg.Control.TopLevelControl as FloatingForm).WindowState != FormWindowState.Maximized) (arg.Control.TopLevelControl as FloatingForm).WindowState = FormWindowState.Maximized; else (arg.Control.TopLevelControl as FloatingForm).WindowState = FormWindowState.Normal; } } #endregion }
VB
Partial Public Class Form1 Inherits MetroForm #Region "Constructor" Public Sub New() InitializeComponent() Me.dockingManager1.EnableDoubleClickOnCaption = True AddHandler dockingManager1.DockControlDeactivated, AddressOf dockingManager1_DockControlDeactivated AddHandler dockingManager1.DockControlActivated, AddressOf dockingManager1_DockControlActivated AddHandler dockingManager1.DockStateChanged, AddressOf dockingManager1_DockStateChanged AddHandler dockingManager1.OnCaptionDoubleClick, AddressOf dockingManager1_OnCaptionDoubleClick End Sub #End Region #Region "Events" 'Triggers when control lost its focus. Private Sub dockingManager1_DockControlDeactivated(ByVal sender As Object, ByVal arg As DockActivationChangedEventArgs) If dockingManager1.IsFloating(arg.Control) Then dockingManager1.EnableDoubleClickOnCaption = False End If End Sub 'Triggers when the control got the Focus. Private Sub dockingManager1_DockControlActivated(ByVal sender As Object, ByVal arg As DockActivationChangedEventArgs) If Not(dockingManager1.IsFloating(arg.Control)) Then dockingManager1.EnableDoubleClickOnCaption = True Else dockingManager1.EnableDoubleClickOnCaption = False End If End Sub 'Triggers when the dock state changed(Dock state or Floating state or tabbed docking) Private Sub dockingManager1_DockStateChanged(ByVal sender As Object, ByVal arg As DockStateChangeEventArgs) If dockingManager1.IsFloating(arg.Controls(0)) Then dockingManager1.EnableDoubleClickOnCaption = False Else dockingManager1.EnableDoubleClickOnCaption = True End If End Sub 'Event triggeres on double click on the caption bar. Private Sub dockingManager1_OnCaptionDoubleClick(ByVal sender As Object, ByVal arg As Syncfusion.Windows.Forms.Tools.DockControlMouseSelection) If Me.dockingManager1.IsFloating(arg.Control) Then Dim argctrl As Control = arg.Control If (TryCast(arg.Control.TopLevelControl, FloatingForm)).WindowState <> FormWindowState.Maximized Then TryCast(arg.Control.TopLevelControl, FloatingForm).WindowState = FormWindowState.Maximized Else TryCast(arg.Control.TopLevelControl, FloatingForm).WindowState = FormWindowState.Normal End If End If End Sub #End Region End Class
Sample Links:
C#: CaptionDoubleClick_Sample_C#
VB: CaptionDoubleClick_Sample_VB
UG document link: https://help.syncfusion.com/windowsforms/dockingmanager/floating-window#maximize-the-float-window-on-double-click-caption