Использование WeifenLuo DockPanel Suite
Я только что скачал 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
И конечный результат мне это показывает?
1. Как adjust
size
из toolbox
,
2. Если у меня есть form2
с dock panel
как мне показать в form1
Заранее спасибо!
2 ответа
Q1 Как отрегулировать размер панели инструментов.
Контейнер DockPanel имеет DockLeftPortion
собственность (справа, снизу и сверху тоже). Это определяет ширину левой области в виде пикселей или пропорции доступной области. Я не видел ничего такого, что позволяло бы ему принимать размеры закрепленных элементов управления.
Q2 Если у меня есть form2 с панелью док-станции, как мне показать в form1
Если у вас есть две формы приложения верхнего уровня, каждая из которых имеет панель док-станции, вы передаете соответствующий элемент управления панели док-станции в качестве первого параметра Show()
метод.
Это то, что вы имели в виду под Q2?
Это старый пост, но, ища что-то еще, я вижу, что только сегодня нашел ответ.
Как изменить размер 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();
Я научился всему этому, изучая исходные документы и пытаясь их воспроизвести.