Компонент Панели прикрепления для.NET, которая позволяет прикреплять внутренние вкладки?

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

Это - Winforms в.NET 3.5.

По сути, я хотел бы следующее:

  • Имейте вкладки в основной форме
  • Каждой вкладке можно было прикрепить панели прикрепления в них
  • Панели прикрепления должны быть подвижными от одной вкладки до другого

Макет в качестве примера http://images.vkarlsen.no/so/2902953/dock-test.png

Я попробовал следующие пакеты компонента до сих пор без удачи:

Telerik

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

Divelements SandDoc

Те же проблемы как с Telerik.

DevExpress XtraBars

Те же проблемы как с Telerik.

http://sourceforge.net/projects/dockpanelsuite/

Та же проблема, окно содержания прикрепления может только принадлежать одной панели прикрепления, что означает, что это не может мигрировать от одной вкладки до другого.


В основном кто-либо знает о каком-либо таком компоненте (пакет), который позволил бы мне делать то, что я хочу?


Править: Хорошо, я попытался получить контроль SourceForge выше работы, но я не вижу, как сделать эту работу.

В основном вот то, в чем я нуждаюсь сделанный:

  1. У меня должно быть несколько вкладок (я не должен расстыковывать их, они могут быть статичными),
  2. Я должен смочь прикрепить содержание на вкладки
  3. Я должен смочь переместить содержание от одной вкладки до другого

Если я понимаю, что ответ ниже этого упоминает это управление, я должен использовать DockPanel вместо TabControl и DockPane вместо TabPage, но насколько я могу сказать, это только дает мне способность прикрепить и расстыковать вкладки, и это не то, что я хочу.

Так или иначе вот программный файл, просто создайте проект Winforms, добавьте ссылку на .dll из проекта SourceForge и вставки в этом коде в Program.cs:

using System;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;

namespace DockTest
{
    public class DockWindow1 : DockContent
    {
        public DockWindow1()
        {
            TabText = "Dock-window #1";

            DockPanel panel = new DockPanel();
            panel.Dock = DockStyle.Fill;
            Controls.Add(panel);

            // tried this related to the exceptions
            // this.DockPanel = panel;
        }
    }

    public class DockWindow2 : DockContent
    {
        public DockWindow2()
        {
            TabText = "Dock-window #2";

            ListBox lb = new ListBox();
            Controls.Add(lb);
            lb.Dock = DockStyle.Fill;
            lb.Items.Add("Listbox");
        }
    }

    public class MainForm : Form
    {
        public MainForm()
        {
            DockPanel panel = new DockPanel();
            panel.Dock = DockStyle.Fill;
            panel.DocumentStyle = DocumentStyle.DockingWindow;
            Controls.Add(panel);

            // exceptions here
            DockPane dp = panel.DockPaneFactory.CreateDockPane(
                new DockWindow1(), DockState.Document, true);
            dp.AllowDockDragAndDrop = true;
            dp.AllowDrop = true;

            DockWindow1 w1 = new DockWindow1();
            w1.Show(panel);

            DockWindow2 w2 = new DockWindow2();
            w2.Show(panel);
        }
    }

    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.Run(new MainForm());
        }
    }
}

11
задан Lasse V. Karlsen 25 May 2010 в 13:45
поделиться

3 ответа

Попробуйте Devcomponents.com

1
ответ дан 3 December 2019 в 11:20
поделиться

Попробуйте это.

http://sourceforge.net/projects/dockpanelsuite/

EDIT

Вы можете попробовать DockPane вместо Tabs, если это вообще возможно. DockPane позволит вам перемещать элементы из одной панели в другую.

1.DockPanel заменяет TabControl
2.DockPane заменяет TabPages

DockPane dp = dockPanel.DockPaneFactory.CreateDockPane(new DockForm(), DockState.Document, true);
dp.AllowDockDragAndDrop = true;
dp.AllowDrop = true;
6
ответ дан 3 December 2019 в 11:20
поделиться

Попробуйте сделать следующее (мой пример telerik):

  1. Добавить DockingManager из панели инструментов
  2. В программной части выполните следующие действия:

    DockPanel dockPanel = new DockPanel ();
    dockPanel.Text = "My Panel ";
    dockPanel.Dock = DockStyle.Fill;
    // Добавить панель док-станции в менеджер
    dockingManager1.SetDocument (addProdDockPanel);

0
ответ дан 3 December 2019 в 11:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: