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
Didn't find an answer?
Contact Support