Вам нужно создать свой собственный дизайнер для вашего контроля.Начните с добавления ссылки на 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, который может остановить отладчик на исключениях времени разработки.