Пользовательская библиотека управления Windows в C # - PullRequest
4 голосов
/ 15 ноября 2010

Как я могу реализовать функции небольших задач в моей собственной библиотеке управления окнами, как показано ниже?alt text

Ответы [ 2 ]

4 голосов
/ 15 ноября 2010

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

using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Windows.Forms.Design;

[Designer(typeof(MyControlDesigner))]
public class MyControl : Control {
    public bool Prop { get; set; }
}

Обратите внимание на атрибут [Designer], он устанавливает конструктор пользовательских элементов управления.Для начала создайте собственный дизайнер из ControlDesigner.Переопределите свойство ActionLists, чтобы создать список задач для дизайнера:

internal class MyControlDesigner : ControlDesigner {
    private DesignerActionListCollection actionLists;
    public override DesignerActionListCollection ActionLists {
        get {
            if (actionLists == null) {
                actionLists = new DesignerActionListCollection();
                actionLists.Add(new MyActionListItem(this));
            }
            return actionLists;
        }
    }
}

Теперь вам нужно создать собственный ActionListItem, который может выглядеть следующим образом:

internal class MyActionListItem : DesignerActionList {
    public MyActionListItem(ControlDesigner owner)
        : base(owner.Component) {
    }
    public override DesignerActionItemCollection GetSortedActionItems() {
        var items = new DesignerActionItemCollection();
        items.Add(new DesignerActionTextItem("Hello world", "Category1"));
        items.Add(new DesignerActionPropertyItem("Checked", "Sample checked item"));
        return items;
    }
    public bool Checked {
        get { return ((MyControl)base.Component).Prop; }
        set { ((MyControl)base.Component).Prop = value; }
    }
}

Построение списка вметод GetSortedActionItems является ключом к созданию вашей собственной панели элементов задачи.

Это счастливая версия.Я должен отметить, что я три раза вылетал на рабочий стол Visual Studio, работая над этим примером кода.VS2008 не устойчив к необработанным исключениям в пользовательском коде конструктора.Сохранить часто.Отладка временного кода разработки требует запуска другого экземпляра VS, который может остановить отладчик на исключениях времени разработки.

0 голосов
...