DockingManager refuses to dock as Fill

I cannot get a panel to fill the content area (DockStyle.Fill):

Image_3136_1696519343630

I can manually drag the width of the panel but trying to dock as fill does not work.

Using this code:


public class Providers

{
private readonly Form m_MainWindow;
private DockingManager m_DockingManager;
private Panel m_ContentPanel;
private Dictionary m_DockablePanels;


public Providers(Form Window)
{
//
// This routine is invoked from Window's ctor
//


m_MainWindow = Window;


m_DockablePanels = new Dictionary();


m_DockingManager = new DockingManager();
((System.ComponentModel.ISupportInitialize)(m_DockingManager)).BeginInit();
m_DockingManager.HostForm = Window;
m_DockingManager.HostControl = Window;
m_DockingManager.ImageList = new ImageList();
m_DockingManager.ImageList.Images.Add(Properties.Resources.providers);
m_DockingManager.VisualStyle = Syncfusion.Windows.Forms.VisualStyle.Office2016DarkGray;
m_DockingManager.MaximizeButtonEnabled = false;
m_DockingManager.CloseEnabled = false;
m_DockingManager.EnableContextMenu = false;
m_DockingManager.ReduceFlickeringInRtl = false;


m_ContentPanel = new Panel(); // important: do not dock as fill
m_ContentPanel.Name = "ProvidersContentPanel";
m_MainWindow.Controls.Add(m_ContentPanel);


//
// Create dockable panels
//
var panelInfo = new List<(string Name, int IconIndex)>() {
{("Providers", 0)},
{("A", 0) },
{("B", 0) },
{("C", 0) },
{("D", 0) },
{("E", 0) },
{("F", 0) },
};


foreach (var info in panelInfo)
{
var panel = new Panel();
panel.Name = $"{info.Name}Panel";
panel.Visible = false;
m_DockablePanels.Add(info.Name, panel);
m_ContentPanel.Controls.Add(panel);
}
((System.ComponentModel.ISupportInitialize)(m_DockingManager)).EndInit();
}


public void ShowProviders(bool ForceRefresh=false)
{
//
// This routine is invoked from Window's _Shown callback
//


var providersPanel = m_DockablePanels["Providers"];
providersPanel.Visible = true;
providersPanel.Dock = DockStyle.Fill;
m_DockingManager.SetEnableDocking(providersPanel, true); // panel control is moved out of m_ContentArea!!
m_DockingManager.SetDockLabel(providersPanel, "Provider List");
m_DockingManager.SetDockIcon(providersPanel, 0);
m_DockingManager.SetDockVisibility(providersPanel, true);
m_DockingManager.DockControl(providersPanel, m_ContentPanel, DockingStyle.Fill, 0);
}
}

1 Reply

BA BagavathiPerumal Apranandham Syncfusion Team October 10, 2023 12:47 PM UTC

Hi Aaron LeMasters,



As per design the document area (MDI and TDI) will hold the remaining space of the docked panels. If you need to fill the docked panel, we suggest you to use the DockToFill property of DockingManager to true.

 

CodeSnipppets:

 

m_DockingManager.DockToFill = true;

 

Documentation link: Dock Window in Windows Forms Docking Manager control | Syncfusion




Regards,
Bagavathi Perumal A


Loader.
Up arrow icon