Customizing FloatWindow¶
By Ryan Rastedt, Lex Li
This page shows you how to customize FloatWindow.
Maximizable FloatWindow¶
Out of the box, a window that is undocked to a floating state lacks a maximize button.
Utilizing the Extender functionality of DockPanel it’s easy to customize the
FloatWindow class!
The first step is to create a custom class that extends FloatWindow. By default,
FloatWindow has a FormBorderStyle of SizableToolWindow which will only provide
a close button. To expose the maximize and minimize button, set FormBorderStyle of
the custom window to Sizable,
public class CustomFloatWindow : FloatWindow
{
public CustomFloatWindow(DockPanel dockPanel, DockPane pane)
: base (dockPanel, pane)
{
FormBorderStyle = FormBorderStyle.Sizable;
}
public CustomFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds)
: base (dockPanel, pane, bounds)
{
FormBorderStyle = FormBorderStyle.Sizable;
}
}
Next, create a factory class to create the CustomFloatWindow. This is done by implementing
the IFloatWindowFactory interface,
public class CustomFloatWindowFactory : DockPanelExtender.IFloatWindowFactory
{
public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds)
{
return new CustomFloatWindow(dockPanel, pane, bounds);
}
public FloatWindow CreateFloatWindow(DockPanel dockPanel, DockPane pane)
{
return new CustomFloatWindow(dockPanel, pane);
}
}
Lastly, attach the new factory to the DockPanel control,
this.dockPanel.Extender.FloatWindowFactory = new CustomFloatWindowFactory();
Alt+Tab Support¶
To enable Alt+Tab between your undocked forms and your main form add this to
your CustomFloatWindow constructors,
ShowInTaskbar = true;
Owner = null;
Overriding Double Clicking Behavior¶
Note
This requires DockPanel Suite version 2.8 and above.
By default, when a float window’s title bar is double clicked it is redocked into
the DockPanel. This behavior can be disabled (and allow the Windows default
behavior of maximizing/restoring the window) by setting the following property
in your CustomFloatWindow constructor,
DoubleClickTitleBarToDock = false;
Positioning for Multiple Monitors¶
When a dock content is set to float, the created FloatWindow might be at a
secondary monitor (depending on WinForms underlying positioning).
To force the FloatWindow to appear on a desired monitor, a custom FloatWindow
can be created. Then override its SetBoundsCore method to check the monitors based
on the information exposed by the Screen class.
Top-Most FloatWindow¶
To make the FloatWindow top-most, simply create a custom FloatWindow class and
set its TopMost property to true.