Interactively, Tool Windows behave in the same manner as windows in Visual Studio .NET 2003 meaning that:
Holding the CTRL key while dragging a tool window prevents it from being docked.
Pressing the ESC key while dragging a tool window will cancel the operation and the tool window will remain in its current state and location.
Double-clicking in a tool window's caption will alternate its state between docked and floating. The tool window will regain its last known size and location for each state.
When a tool window is being dragged, drop-cues will appear when the mouse enters a dock-site indicating where it would be docked if it was dropped. A drop-cue will also appear when the tool window is not in a dock-site indicating where it would be located (in a floating state) if it was dropped.
In the case where a tool window is docked with another tool window, the tool window to be docked will occupy no more than 50% of the space occupied by the target tool window. This limitation does not apply once the tool window is docked.
When a tool window is docked, the text in its caption is not bold. When its state is changed to floating, the text in the caption will become bold.
The state of a tool window cannot be changed from floating to auto hide and vice-versa. The tool window must first be docked in order to change its state to either floating or auto-hide. This limitation does not apply when the state of a tool window is modified programmatically.
The DockLayoutManager class exposes the AllowFloating and AllowDocking properties, which can prevent the end-user from changing the state of tool windows interactively. The AllowFloating property indicates whether docked tool windows can become floating, while the AllowDocking property indicates whether floating tool windows can become docked, as well as preventing currently docked tool windows from being docked in another location. Neither the AllowFloating nor the AllowDocking property changes the current state of tool windows (i.e., floating tool windows will remain floating even if AllowFloating is set to false).
In addition to the AllowFloating and AllowDocking properties, the DockLayoutManager class also exposes the AllowAutoHide and AllowHide properties. The AllowAutoHide property indicates whether docked tool windows can become auto-hide tool windows and whether auto-hide tool windows can become docked tool windows, by displaying or removing the auto-hide "pin/unpin" glyph () and the "Auto Hide" option from the context menu. The AllowHide property indicates whether tool windows can be hidden by displaying or removing the hide glyph () and the "Hide" option from the context menu.
The AllowFloating, AllowDocking, AllowAutoHide, and AllowHide properties only apply to end-user interactivity; they do not prevent the state or visibility of tool windows from being changed programmatically.