How to adjust docked control size when dock state changed in WinForms Docking Manger?
Docking Events
In DockingManager, the control size can be maintained by using below events.
ResizeBegin
This event occurs when resize begins and it helps to store size information.
ResizeEnd
This event raises when Resize ends and it helps to update the control size and updated size information.
AutoHideAnimationStart
This event raises when AutoHide Animation starts, it helps to update the size for child controls.
AutoHideAnimationStop
This event raises when AutoHide Animation ends, it helps to update with size information once AutoHide functionality is completed.
Following code examples demonstrates the same.
C#
// Maintain the panel sizes based on key parameters from beginning of move private void frmExample_Resize(object sender, EventArgs e) { SetPanelSizes(); } // Get the key size parameters at beginning of resize (pnlB sets width for A/B/C) private void frmExample_ResizeBegin(object sender, EventArgs e) { origABCWidth = pnlB.Size.Width; origCHeight = pnlC.Size.Height; origEWidth = pnlE.Size.Width; } // Set the panel sizes based on key parameters from beginning of move private void frmExample_ResizeEnd(object sender, EventArgs e) { SetPanelSizes(); UpdateSizeInfo(); } // Resize the panel when it starts to be shown private void dockMgrMain_AutoHideAnimationStart(object sender, AutoHideAnimationEventArgs arg) { ResizePanelA(); } // Update the label with the final panel size private void dockMgrMain_AutoHideAnimationStop(object sender, AutoHideAnimationEventArgs arg) { UpdateSizeInfo(); }
VB
'Maintain the panel sizes based on key parameters from beginning of move Private Sub frmExample_Resize(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Resize SetPanelSizes() End Sub 'Get the key size parameters at beginning of resize (pnlB sets width for A/B/C) Private Sub frmExample_ResizeBegin(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.ResizeBegin origABCWidth = pnlB.Size.Width origCHeight = pnlC.Size.Height origEWidth = pnlE.Size.Width End Sub 'Set the panel sizes based on key parameters from beginning of move Private Sub frmExample_ResizeEnd(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.ResizeEnd SetPanelSizes() UpdateSizeInfo() End Sub 'Resize the panel when it starts to be shown Private Sub dockMgrMain_AutoHideAnimationStart(ByVal sender As Object, ByVal arg As AutoHideAnimationEventArgs) Handles dockMgrMain.AutoHideAnimationStart ResizePanelA() End Sub 'Update the label with the final panel size Private Sub dockMgrMain_AutoHideAnimationStop(ByVal sender As Object, ByVal arg As AutoHideAnimationEventArgs) Handles dockMgrMain.AutoHideAnimationStop UpdateSizeInfo() End Sub
Figure 1. Control at their original position in Docking Manager with image
Figure 2. Maintain controls size in Docking Manager with image
Samples:
C#: How to maintain the control size in Docking Manager C#
VB: How to maintain the control size in Docking Manager VB