Установите приоритет вертикальной док-станции над горизонтальной с помощью DockPanel Suite

Я использую DockPanel Suite, но столкнулся с проблемой из-за относительно скудной документации.

У меня есть две пристыкованные панели: одна, которая стыкуется слева и справа, называется «Сторона», а другая, которая стыкуется снизу, называется «Нижняя». Я хотел бы, чтобы сторона заполнила высоту формы, а нижняя часть заполнила остальную часть.

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

Но вместо этого у меня есть следующее: Заливка нижнего дока

Когда я запускаю программу, я получаю второй вариант, и если я перетащу Bottom наружу, чтобы плавать, а затем перетащу его обратно, он будет закреплен так, как я хочу, но я не могу добиться этого программно.

Вот мой код:

public Form1()
{
    InitializeComponent();

    SideForm side = new SideForm();
    side.Show(dockPanel, DockState.DockRight);

    BottomForm bottom = new BottomForm();
    bottom.Show(dockPanel, DockState.DockBottom);
}

Я пытался изменить порядок, но это не имеет никакого эффекта. Я пробовал копаться в различных свойствах и методах, но документации не так много, поэтому IntelliSense здесь не очень помогает.

Обновлять

Я пытался переместить боковую панель вперед и/или отодвинуть нижнюю панель назад, как предложили два человека, но это не дало никакого эффекта. Вот полный код для этого:

public Form1()
{
    InitializeComponent();

    SideForm side = new SideForm();
    side.Show(dockPanel, DockState.DockRight);

    BottomForm bottom = new BottomForm();
    bottom.Show(dockPanel, DockState.DockBottom);

    // I've tried enabling these one at a time, and even both at once, no effect
    side.BringToFront();
    bottom.SendToBack();
}

Пользователь Лекс Ли сделал еще одно предложение о том, чтобы сначала создать документ, а затем пристыковать его к нижней части. Казалось, это сработало, за исключением того, что теперь в нижнем окне нет следующего:

Без заголовка

Вот код, который я использовал для создания этого:

doc = new Document();
doc.Show(dockPanel, DockState.Document);

side = new SideForm();
side.Show(dockPanel, DockState.DockRight);

bottom = new BottomForm();
bottom.Show(doc.Pane, DockAlignment.Bottom, 0.3);

Я могу избежать этого, установив для свойства DocumentStyle основной док-панели значение DockingMdi или DockingWindow, что дает мне следующее:

Вкладки

Но тогда есть те вкладки, которые мне не нужны; Я предпочитаю использовать стиль DockingSdi.

Итак, я пытаюсь программно добиться стыковки в самый низ, вот так: Показываю расположение стыковки... Начало стыковки

И, наконец, пристыкованное окно Docked


person Reticulated Spline    schedule 24.02.2015    source источник
comment
Я не работал с сторонним DockPanel Suite, но пробовали ли вы нечто подобное: side.BringToFrom(); дно.SendToBack();   -  person E-Bat    schedule 24.02.2015
comment
Да, я пробовал оба. Нет эффекта.   -  person Reticulated Spline    schedule 24.02.2015


Ответы (2)


Просто для протокола: чтобы изменить приоритет стыковки, вам нужно настроить Z-порядок DockWindow. Поместите это:

dockPanel.UpdateDockWindowZOrder(DockStyle.Right, true);

между InitializeComponent() и созданием/стыковкой дочерних форм.

person Serge N    schedule 14.09.2016
comment
Вау, это работает именно так, как я хотел! Бесконечно благодарен! - person Reticulated Spline; 18.09.2016

Вы пробовали использовать Control.BringToFrom() и\или control.SendToBack()?

SideForm side = new SideForm();
side.Show(dockPanel, DockState.DockRight);

BottomForm bottom = new BottomForm();
bottom.Show(dockPanel, DockState.DockBottom);

side.BringToFrom();

or

bottom.SendToBack();
person E-Bat    schedule 24.02.2015
comment
Да, я пробовал, но ни перенос на передний план, ни отправка на задний план не дали никакого эффекта. - person Reticulated Spline; 24.02.2015
comment
Я пробовал с этим кодом и работал, можете ли вы поделиться полным кодом? - person E-Bat; 24.02.2015