Using WeifenLuo DockPanel Suite

岁酱吖の 提交于 2019-11-30 21:10:39

Q1 How to adjust the size of the toolbox.

The DockPanel container has a DockLeftPortion property (Right, Bottom and Top too). This specifies the width of the left area as either pixels or a proportion of the available area. I haven't seen anything that allows it to take on the size of the docked controls.

Q2 If I have form2 with the dock panel how do I show in the form1

If you have two top level application forms each with a dock panel, you pass the appropriate dockpanel control as the first parameter to the Show() method.

Is this what you meant by Q2?

This is an old post, but whilst looking for something else, I see that I have, just today, found the answer.


How To Resize DockForms

To resize the forms, here is a way that will let you modify them. Look here. Just paste this into the namespace of your main sub (I put mine at the bottom):

public class CustomFloatWindow : FloatWindow {
    public CustomFloatWindow(DockPanel dockPanel, DockPane pane)
        : base(dockPanel, pane) {
            FormBorderStyle = FormBorderStyle.Sizable;
            MaximizeBox = false;
            MinimizeBox = false;
                            Width = 50;
    }

    public CustomFloatWindow(DockPanel dockPanel, DockPane pane, Rectangle bounds)
        : base(dockPanel, pane, bounds) {
        FormBorderStyle = FormBorderStyle.Sizable;
        MaximizeBox = false;
        MinimizeBox = false;
                    Width = 50;
    }
}

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);
    }
}

And then, to make it work, paste this into the main form:

dockPanel.Extender.FloatWindowFactory = new CustomFloatWindowFactory();

How To Show the Docked Panel

To show the panel docked in the dock-form, you have to create a sort of form-template, and in its code, where it says Form, change it to DockContent, like this:

Now, in a form which you want to use in the docking panel, modify the code to look like this (notice the DockContent as the type, rather than Form):

namespace mynamespace{
public partial class MyForm: DockContent {
    public dockform_MyForm() {
        InitializeComponent();
    }

    private void MyForm_Load(object sender, EventArgs e) {
    }
}
}

Then, to dock it, we first declare the new form, then create it. I like this:

//in your form main sub:
private dockform_MyForm dform_MyForm = new MyForm();

//now, somewhere in your form's class, put this:
public void showMyFormDocked() {
    dform_MyForm = new MyForm();
    dform_MyForm.Show(dockPanel);
}

Finally, to show the form, you just call this from anywhere:

showMyFormDocked();

I learned all this from studying the source docs and trying to reproduce them.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!