Category / Section
How to detect if FloatingWindow close button is clicked?
1 min read
Close button of Floating window clicked event can detected from the VisibleChanged event of FloatingForm. Here we get the FloatingForm on DockStateChanged event. VisibleChanged event of FloatingForm will be raised when we click the close button. The following code demonstrates the same.
C#
//Initialize the Panels
this.panel1 = new System.Windows.Forms.Panel();
this.panel2 = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
//Docking VisualStyle
this.dockingManager1.VisualStyle = VisualStyle.Metro;
//For Docking Panels
this.dockingManager1.SetDockLabel(this.panel1, "panel1");
this.dockingManager1.SetEnableDocking(this.panel1, true);
this.dockingManager1.SetDockLabel(this.panel2, "panel2");
this.dockingManager1.SetEnableDocking(this.panel2, true);
this.dockingManager1.SetDockLabel(this.panel3, "panel");
this.dockingManager1.SetEnableDocking(this.panel3, true);
//For Getting Floating Form
this.dockingManager1.DockStateChanged += dockingManager1_DockStateChanged;
void dockingManager1_DockStateChanged(object sender, Syncfusion.Windows.Forms.Tools.DockStateChangeEventArgs arg)
{
if (this.dockingManager1.IsFloating(arg.Controls[0]))
{
if (arg.Controls[0].TopLevelControl != null && arg.Controls[0].TopLevelControl is FloatingForm)
//For Close Button clicked on Floating Form
(arg.Controls[0].TopLevelControl as FloatingForm).VisibleChanged += Form1_VisibleChanged;
}
}
bool CloseButtonClicked=false;
void Form1_VisibleChanged(object sender, EventArgs e)
{
CloseButtonClicked = true;
MessageBox.Show("CloseButtonClicked");
}
VB
'Initialize the Panels
Me.panel1 = New System.Windows.Forms.Panel()
Me.panel2 = New System.Windows.Forms.Panel()
Me.panel3 = New System.Windows.Forms.Panel()
'Docking VisualStyle
Me.dockingManager1.VisualStyle = VisualStyle.Metro
'For Docking Panels
Me.dockingManager1.SetDockLabel(Me.panel1, "panel1")
Me.dockingManager1.SetEnableDocking(Me.panel1, True)
Me.dockingManager1.SetDockLabel(Me.panel2, "panel2")
Me.dockingManager1.SetEnableDocking(Me.panel2, True)
Me.dockingManager1.SetDockLabel(Me.panel3, "panel")
Me.dockingManager1.SetEnableDocking(Me.panel3, True)
'For Getting Floating Form
AddHandler Me.dockingManager1.DockStateChanged, AddressOf dockingManager1_DockStateChanged
void dockingManager1_DockStateChanged(Object sender, Syncfusion.Windows.Forms.Tools.DockStateChangeEventArgs arg)
If True Then
If Me.dockingManager1.IsFloating(arg.Controls(0)) Then
If arg.Controls(0).TopLevelControl IsNot Nothing AndAlso TypeOf arg.Controls(0).TopLevelControl Is FloatingForm Then
'For Close Button clicked on Floating Form
AddHandler TryCast(arg.Controls(0).TopLevelControl, FloatingForm).VisibleChanged, AddressOf Form1_VisibleChanged
End If
End If
End If
Dim CloseButtonClicked As Boolean=False
void Form1_VisibleChanged(Object sender, EventArgs e)
If True Then
CloseButtonClicked = True
MessageBox.Show("CloseButtonClicked")
End If
Screenshot

Samples: