Использование WeifenLuo DockPanel Suite - PullRequest
5 голосов
/ 30 декабря 2011

Я только что скачал WeifenLuo (Dock Panel Suite) и пытаюсь с этим поработать, но я не смог найти конкретную документацию по его использованию.

И у меня естьПрошел некоторые вопросы SO и наконец получил кое-что для начала.

Вот что я сделал: я создал класс ToolboxWindow, как показано ниже:

Public Class ToolboxWindow
    Inherits WeifenLuo.WinFormsUI.Docking.DockContent

    Public Sub New()

    End Sub
End Class

И пытаюсьсоздать экземпляр этого набора инструментов следующим образом:

Public Class Form1
    Private toolboxWindow As ToolboxWindow

    Public Sub New()
        Me.InitializeComponent()

        'Create new ToolboxWindow
        toolboxWindow = New ToolboxWindow()
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        'Show it
        toolboxWindow.Show(DockPanel1, DockState.DockLeft)
    End Sub
End Class

И конечный результат, который он мне показывает?

enter image description here

1. Как adjust size из toolbox.

2.Если у меня form2 с dock panel, как мне показать в form1

Заранее спасибо!

Ответы [ 2 ]

6 голосов
/ 04 января 2012

Q1 Как настроить размер панели инструментов.

Контейнер DockPanel имеет свойство DockLeftPortion (также справа, снизу и сверху).Это определяет ширину левой области в виде пикселей или доли доступной области.Я не видел ничего, что позволяло бы ему принимать размер закрепленных элементов управления.

Q2 Если у меня есть form2 с панелью закрепления, как я могу показать в форме 1

Если у вас есть две формы заявки верхнего уровня, каждая с панелью док-станции, вы передаете соответствующий элемент управления док-станцией в качестве первого параметра методу Show().

Это то, что вы имели в виду под Q2?

4 голосов
/ 19 июля 2012

Это старый пост, но, ища что-то еще, я вижу, что только сегодня нашел ответ.


Как изменить размер DockForms

Чтобы изменить размеры форм, вот способ, который позволит вам изменить их. Смотрите здесь . Просто вставьте это в пространство имен вашей основной сабвуфера (я поставил мой внизу):

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

А затем, чтобы заставить это работать, вставьте это в основную форму:

dockPanel.Extender.FloatWindowFactory = new CustomFloatWindowFactory();

Как показать закрепленную панель

Чтобы показать панель, закрепленную в док-форме, вы должны создать своего рода шаблон формы, а в коде, где написано Form, изменить его на DockContent, например:

Теперь в форме, которую вы хотите использовать на панели стыковки, измените код так, чтобы он выглядел следующим образом (обратите внимание на DockContent в качестве типа, а не Form):

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

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

Затем, чтобы закрепить его, мы сначала объявляем новую форму, а затем создаем ее. Мне нравится это:

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

Наконец, чтобы показать форму, вы просто вызываете ее из любого места:

showMyFormDocked();

Я узнал все это из изучения исходных документов и попыток их воспроизвести.

...